用c语言实现冒泡排序,选择排序,快速排序

首先我们来讲一下三种基本的排序算法——冒泡排序、选择排序和快速排序,并且给出实现的具体代码。

冒泡排序

冒泡排序是一个非常简单的排序算法,其基本思想是比较相邻两个数的大小,如果前一个数比后一个数大,就将两个数交换位置。通过不断重复这个过程,将最大的数“冒泡”到数组的最后面,这个过程类似于水泡在水中不断冒上来,因此得其名。

具体的实现代码如下:

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

其中,参数 arr 表示待排序的数组,参数 n 表示数组的大小。我们使用两层循环来遍历所有的元素,对于相邻的两个元素进行比较,如果前一个元素大于后一个元素,则将这两个元素交换位置。

选择排序

选择排序是另一种简单的排序算法,其基本思想是将待排序数组分为已排序和未排序两部分,每次从未排序部分中选择最小的元素,将其加入到已排序部分的末尾。这个过程不断重复,直到所有元素都排序完毕。

具体的实现代码如下:

void selectionSort(int arr[], int n) {
    int i, j, min_idx;
    for (i = 0; i < n-1; i++) {
        min_idx = i;
        for (j = i+1; j < n; j++) {
            if (arr[j] < arr[min_idx]) {
                min_idx = j;
            }
        }
        int temp = arr[i];
        arr[i] = arr[min_idx];
        arr[min_idx] = temp;
    }
}

其中,参数 arrn 的含义与冒泡排序中相同。我们使用两层循环来遍历未排序部分的所有元素,每次选择未排序部分的最小值将其添加到已排序部分的末尾。

快速排序

快速排序是一种高效的排序算法,其基本思想是选择一个元素作为枢纽(pivot),将小于枢纽的元素放在左边,将大于枢纽的元素放在右边,然后对左右两个部分分别进行递归调用。最终得到的序列是有序的。

具体的实现代码如下:

void quickSort(int arr[], int low, int high) {
    if (low < high) {
        int pi = partition(arr, low, high);
        quickSort(arr, low, pi-1);
        quickSort(arr, pi+1, high);
    }
}

int partition(int arr[], int low, int high) {
    int pivot = arr[high];
    int i = (low - 1);
    for (int j = low; j <= high-1; j++) {
        if (arr[j] < pivot) {
            i++;
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    int temp = arr[i+1];
    arr[i+1] = arr[high];
    arr[high] = temp;
    return (i+1);
}

其中,参数 arr 表示待排序的数组,参数 lowhigh 分别表示数组的起始和结束位置。我们使用递归的方式实现快速排序,首先选择一个元素作为枢纽,然后分别对左右两个部分进行递归排序。

这里也让我们来看两个示例说明,以方便理解。

示例1:

int arr[] = {5, 2, 9, 3, 7, 6, 8, 1, 4};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);

将数组 arr 定义为 {5, 2, 9, 3, 7, 6, 8, 1, 4},数组的大小为 n,然后使用冒泡排序算法对其进行排序。

示例2:

int arr[] = {5, 2, 9, 3, 7, 6, 8, 1, 4};
int n = sizeof(arr)/sizeof(arr[0]);
quickSort(arr, 0, n-1);

将数组 arr 定义为 {5, 2, 9, 3, 7, 6, 8, 1, 4},数组的大小为 n,然后使用快速排序算法对其进行排序。

以上就是三种常见的排序算法的实现方法,以及两条示例代码的说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用c语言实现冒泡排序,选择排序,快速排序 - Python技术站

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

相关文章

  • java插入排序 Insert sort实例

    下面我将详细讲解如何实现Java的插入排序算法。 插入排序 Insert Sort 插入排序是一种简单直观的排序算法,它的基本思想是将未排序的数据依次插入到已排序数据中的合适位置,使得插入后序列仍然有序。 插入排序的算法步骤如下: 从第一个元素开始,该元素可以认为已经被排序; 取出下一个元素,在已经排序的元素序列中从后向前扫描; 如果该元素(已排序)大于新元…

    算法与数据结构 2023年5月19日
    00
  • C语言实现文件内容按行随机排列的算法示例

    下面我将为您详细介绍“C语言实现文件内容按行随机排列的算法示例”的完整攻略。 1、问题描述 首先,这个算法的问题描述是:实现一个按行随机排列文件内容的算法,要求结果能够尽可能地随机、均匀。 2、算法思路 针对这个问题,我们可以采用以下算法思路: 首先读取文件的全部内容,将其中的每一行存在一个字符串数组中; 然后采用洗牌算法(shuffle algorithm…

    算法与数据结构 2023年5月19日
    00
  • JS简单数组排序操作示例【sort方法】

    JS简单数组排序操作示例【sort方法】 操作说明 在JavaScript中,通过数组的sort()方法可以对数组进行排序操作。sort()方法会直接对原数组进行排序,返回排序后的原数组。 sort()方法通常需要传入一个比较函数,来指定排序规则。比较函数接收两个参数,分别表示待比较的两个元素,如果返回值小于0,则表示第一个元素排在第二个元素前面;如果返回值…

    算法与数据结构 2023年5月19日
    00
  • python中的插入排序的简单用法

    下面是Python中插入排序的简单用法攻略: 1. 什么是插入排序 插入排序是一种简单的排序算法,它的基本思想是将未排序的元素依次插入到已排序的有序序列中的合适位置,以此完成排序。插入排序的时间复杂度为O(n^2),通常用于小规模数据的排序。 2. 插入排序的Python实现 以下是插入排序的Python代码实现: def insertion_sort(da…

    算法与数据结构 2023年5月19日
    00
  • Go语言展现快速排序算法全过程的思路及代码示例

    这里是关于“Go语言展现快速排序算法全过程的思路及代码示例”的详细攻略。 什么是快速排序算法 快速排序算法是一种基于比较的排序算法,它通过选择一个基准元素,将数组分为两部分然后递归地对这两部分进行排序,最终完成对整个数组的排序。快速排序算法的时间复杂度为 O(nlogn) 平均情况下,但是在最坏情况下会退化为 O(n^2)。 快速排序算法的实现思路 下面是快…

    算法与数据结构 2023年5月19日
    00
  • JavaScript排序算法之希尔排序的2个实例

    下面我将详细讲解“JavaScript排序算法之希尔排序的2个实例”的完整攻略。 算法简介 希尔排序(Shell Sort)是插入排序的一种更高效的改进版本,也称为缩小增量排序。它通过在不断缩小步长的序列中对数据进行多轮分组插入排序来进行排序。首先将整个待排序的记录序列分割成为若干个子序列分别进行直接插入排序,待整个序列中的元素基本有序时,再对全体元素进行一…

    算法与数据结构 2023年5月19日
    00
  • Redis使用ZSET实现消息队列使用小结

    Redis使用ZSET实现消息队列使用小结 概述 Redis是一款功能强大的开源的In-Memory数据结构存储系统,除了支持key-value结构外,它还提供了List、Set、Hash和ZSet。其中ZSet是有序集合,它可以在插入元素时指定一个score值,可以根据score进行排序,也可以查看属于某个score范围内的元素。因此,ZSet也可以用来实…

    算法与数据结构 2023年5月19日
    00
  • 七大经典排序算法图解

    “七大经典排序算法图解”攻略 简要介绍 “七大经典排序算法图解”是一篇介绍常见排序算法的文章。通过对每个算法的思想、代码实现和性能分析进行详细讲解,帮助读者更好地理解和掌握排序算法。 算法列表 本文介绍的七个排序算法如下: 冒泡排序 插入排序 选择排序 快速排序 归并排序 堆排序 希尔排序 冒泡排序 冒泡排序是一种简单的排序算法,它基于交换相邻元素的思想。具…

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