C语言排序算法实现:冒泡、选择与快速排序
版权申诉
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);
}
}
```
这三个排序算法各有特点:冒泡排序易于理解但效率较低,适用于小规模数据;选择排序的时间复杂度与冒泡排序相同,但在某些情况下可能更快;快速排序在平均情况下具有较高的效率,但最坏情况下的时间复杂度较高。在实际应用中,通常会根据数据规模和特定需求选择合适的排序算法。
2021-03-22 上传
2021-09-19 上传
2021-10-01 上传
2023-07-03 上传
2023-07-30 上传
2024-01-24 上传
2023-05-13 上传
2023-07-14 上传
2023-08-21 上传
nibuchunzhai
- 粉丝: 0
- 资源: 948