C语言的冒泡排序和快速排序算法使用实例

C语言的冒泡排序和快速排序算法使用实例

什么是排序算法

排序算法是一种将一组数据按照特定顺序排列的算法。常见的排序算法包括冒泡排序、快速排序、插入排序、选择排序等。

冒泡排序

冒泡排序是一种简单的排序算法,它重复地走访过要排序的元素,依次比较相邻两个元素,如果它们的顺序错误就交换它们的位置。重复这个过程,直到没有再需要交换的元素,即排序完成。

以下是 C 语言实现冒泡排序的示例程序:

#include <stdio.h>

void bubble_sort(int arr[], int len)
{
    int i, j, temp;
    for (i = 0; i < len - 1; i++)
    {
        for (j = 0; j < len - 1 - i; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main()
{
    int arr[] = { 5, 2, 8, 7, 1 };
    int len = sizeof(arr) / sizeof(arr[0]);
    bubble_sort(arr, len);
    for (int i = 0; i < len; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

上面的程序中,bubble_sort 函数接收一个数组 arr 和数组的长度 len 作为参数,然后实现了冒泡排序。

打印结果为:1 2 5 7 8,即数组已经按照升序排列好了。

快速排序

快速排序是一种高效的排序算法,它基于分治法,能够将时间复杂度降至 O(n log n)。

以下是 C 语言实现快速排序的示例程序:

#include <stdio.h>

void quick_sort(int arr[], int left, int right)
{
    if (left >= right)
    {
        return;
    }
    int i = left, j = right, key = arr[left];
    while (i < j)
    {
        while (i < j && arr[j] >= key)
        {
            j--;
        }
        arr[i] = arr[j];
        while (i < j && arr[i] <= key)
        {
            i++;
        }
        arr[j] = arr[i];
    }
    arr[i] = key;
    quick_sort(arr, left, i - 1);
    quick_sort(arr, i + 1, right);
}

int main()
{
    int arr[] = { 5, 2, 8, 7, 1 };
    int len = sizeof(arr) / sizeof(arr[0]);
    quick_sort(arr, 0, len - 1);
    for (int i = 0; i < len; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

上面的程序中,quick_sort 函数接收一个数组 arr、分区左端点 left 和分区右端点 right 作为参数,然后实现了快速排序。

打印结果为:1 2 5 7 8,即数组已经按照升序排列好了。

结论

从上面两个示例程序可以看出,无论是冒泡排序还是快速排序,它们的核心思想都是将需要排序的元素进行比较和交换。冒泡排序比较简单易懂,但时间复杂度较高。快速排序虽然时间复杂度低,但需要理解递归和分区的概念,较难掌握。

因此,在实际开发中,需要根据实际需求选择合适的排序算法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言的冒泡排序和快速排序算法使用实例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • JavaScript数据结构与算法之二叉树添加/删除节点操作示例

    首先让我们来介绍一下“JavaScript数据结构与算法之二叉树添加/删除节点操作示例”这个主题。 主题介绍 本主题主要介绍了在 JavaScript 中对于二叉树数据结构进行添加/删除节点操作的示例代码。二叉树是一种常见的树形结构,在计算机科学领域中被广泛应用。节点的添加与删除是该数据结构中常见的操作之一,本主题将通过示例代码,为您详细介绍操作的过程。 代…

    算法与数据结构 2023年5月19日
    00
  • c++冒泡排序详解

    c++冒泡排序详解 本文将对c++中的冒泡排序算法进行详解,并提供两个示例以方便读者理解。 冒泡排序的原理 冒泡排序算法通过不断比较相邻两个元素的大小,如果发现顺序不对就交换它们的位置,经过一次比较后就能确定一个元素的最终位置,再对剩余未排序的元素重复进行相同的操作,直到所有元素按照大小顺序排列完成。它的名字“冒泡”的意思即为像水泡一样,大的元素会一步一步向…

    算法与数据结构 2023年5月19日
    00
  • JavaScript算法面试题

    JavaScript算法面试题攻略 1. 理解算法 在准备 JavaScript 算法面试前,需要先了解什么是算法。算法是指解决问题的一系列步骤,常用于解决复杂的问题,在计算机科学中有非常重要的应用。 2. 熟悉常见数据结构 准备算法面试的重点是熟悉常见数据结构。这些数据结构包括数组、链表、栈、队列、堆、散列表等。 3. 学习算法题的分类 在解决算法问题之前…

    算法与数据结构 2023年5月19日
    00
  • C语言实现单链表的快速排序算法

    下面是详细的攻略: 单链表快速排序算法的原理 在单链表上实现快速排序,需要了解快速排序算法的原理。快速排序是一种常用的基于比较的排序算法,它的基本思想是:选取一个基准元素(pivot),将数组分成两个部分,一个部分是小于基准元素的,一个部分是大于基准元素的。然后对这两个部分分别递归进行快排,最终得到排序后的数组。 在单链表上,选择基准元素也是一样的,不同的是…

    算法与数据结构 2023年5月19日
    00
  • 逐步讲解快速排序算法及C#版的实现示例

    逐步讲解快速排序算法及C#版的实现示例 1. 快速排序算法简介 快速排序算法是一种高效的排序算法,它的时间复杂度为 $O(nlogn)$。它的基本思想是通过一次划分将原问题分解为两个子问题,再对子问题进行递归解决,最终得到排序结果。 2. 快速排序算法核心思想 快速排序算法的核心思想是选取一个基准元素,将待排序的序列分成两部分,一部分比基准元素小,一部分比基…

    算法与数据结构 2023年5月19日
    00
  • TypeScript调整数组元素顺序算法

    下面是详细的攻略: TypeScript调整数组元素顺序算法 在 TypeScript 中实现调整数组元素顺序的算法需要使用到以下两种方法: 方法一:splice() array.splice(startIndex, toRemove, …itemsToAdd) splice() 方法可以实现对数组中指定起始索引 startIndex 开始的若干元素的删…

    算法与数据结构 2023年5月19日
    00
  • C++选择排序算法实例详解

    C++选择排序算法实例详解 选择排序算法简介 选择排序是一种简单直观的排序算法,其思想是首先找到序列中的最小值,然后将其放到序列的最前面。接着,从剩余序列中找到次小值,将其放到已排序序列的末尾。以此类推,直到排序完成。 选择排序算法的时间复杂度为$O(n^2)$,空间复杂度为$O(1)$,并且由于其算法思想简单,代码实现容易,所以在实际应用中还是比较常见的排…

    算法与数据结构 2023年5月19日
    00
  • C语言 奇偶排序算法详解及实例代码

    C语言奇偶排序算法详解及实例代码 本篇文章将详细讲解C语言中奇偶排序算法的原理、实现方法及具体的实例代码,并通过两个示例说明其使用方法。 原理介绍 奇偶排序算法又叫交替排序算法,是一种简单但较慢的排序算法,通常用于小型数据集中的排序。该算法通过使用两个线程分别对奇数位置和偶数位置的元素进行比较和交换来实现排序。 该算法的原理如下: 从头到尾扫描一遍待排序数组…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部