C语言排序算法实现:冒泡、选择与快速排序

版权申诉
0 下载量 184 浏览量 更新于2024-09-05 收藏 16KB PDF 举报
该资源提供了三个C语言实现的排序算法:冒泡排序、选择排序和快速排序。每个排序算法都有详细的代码示例,并在主函数中进行测试。 冒泡排序算法 冒泡排序是一种简单的排序算法,通过不断交换相邻两个元素的位置来达到排序的目的。在提供的代码中,冒泡排序的实现包括两个嵌套循环,外层循环控制遍历的轮数,内层循环用于相邻元素的比较和交换。当数组中最大值逐渐“冒”到数组末尾时,排序完成。 ```c void sort(int array[], int size) { int i, j, temp; for (i = 0; i < size - 1; i++) { // 遍历数组 for (j = 0; j < size - 1 - i; j++) { // 每轮比较的次数逐轮减少 if (array[j] > array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } } ``` 选择排序算法 选择排序的原理是找到未排序部分的最小值,然后将其与未排序部分的第一个元素交换。在提供的代码中,选择排序通过一个内部循环寻找最小值,然后将其与第一个未排序的元素交换。 ```c void sort(int array[], int size) { int i, j, k, temp; for (i = 0; i < size - 1; i++) { k = i; for (j = i + 1; j < size; j++) { if (array[k] > array[j]) { k = j; } } temp = array[k]; array[k] = array[i]; array[i] = temp; } } ``` 快速排序算法 快速排序是一种高效的排序算法,基于分治思想。选取一个基准值,将数组分为两部分,一部分所有元素小于基准,另一部分所有元素大于基准。然后对这两部分递归地进行快速排序。 ```c void quick_sort(int array[], int first, int last) { if (first < last) { int temp, low, high, list_separator; low = first; high = last; list_separator = array[(first + last) / 2]; // 中间数 do { while (array[low] < list_separator) { low++; } while (array[high] > list_separator) { high--; } if (low <= high) { temp = array[low]; array[low] = array[high]; array[high] = temp; low++; high--; } } while (low <= high); quick_sort(array, first, high); quick_sort(array, low, last); } } ``` 这三个排序算法各有特点:冒泡排序易于理解但效率较低,适用于小规模数据;选择排序的时间复杂度与冒泡排序相同,但在某些情况下可能更快;快速排序在平均情况下具有较高的效率,但最坏情况下的时间复杂度较高。在实际应用中,通常会根据数据规模和特定需求选择合适的排序算法。