📅  最后修改于: 2023-12-03 15:29:28.308000             🧑  作者: Mango
在 C 编程语言中,数组排序是经常使用的功能。它可以对一个数组中的元素进行排序,让它们按照一定规则排列,便于查找、比较等操作。本文将介绍如何在 C 语言中对数组进行排序。
在 C 语言中,常用的排序算法包括以下几种:
冒泡排序是一种简单的排序算法,它通过不断交换相邻元素的位置来达到排序的目的。冒泡排序的时间复杂度为 O(n^2)。
快速排序是一种常用的排序算法,它通过不断选取枢轴元素并将数组分割成两部分来达到排序的目的。快速排序的时间复杂度为 O(nlogn)。
插入排序是一种简单的排序算法,它通过将未排序元素插入到已排序部分的适当位置来达到排序的目的。插入排序的时间复杂度为 O(n^2)。
归并排序是一种基于分治策略的排序算法,它通过将数组分成两部分、对每部分进行排序、然后将两部分合并来达到排序的目的。归并排序的时间复杂度为 O(nlogn)。
下面将使用快速排序算法来对一个数组进行排序。
#include <stdio.h>
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot) i++;
while (arr[j] > pivot) j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
if (left < j) quickSort(arr, left, j);
if (i < right) quickSort(arr, i, right);
}
int main() {
int arr[10] = {5, 2, 4, 6, 1, 3, 9, 7, 8, 0};
int i;
quickSort(arr, 0, 9);
printf("Sorted array: ");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
在上面的代码中,我们定义了一个 quickSort 函数来对数组进行排序。起始时,我们选取数组的中间元素作为枢轴元素,将数组分成左右两部分,并比较左部分的元素和右部分的元素与枢轴元素的大小关系,然后根据比较结果进行交换。最后,我们递归调用 quickSort 函数对左部分和右部分进行排序,直到排序完成。
在 main 函数中,我们定义了一个包含 10 个元素的数组,并在 quickSort 函数中对其进行排序,最后输出排序后的结果。
在本文中,我们介绍了 C 语言中常用的排序算法和如何对一个数组进行排序。对于程序员来说,掌握好排序算法能够提高程序的效率和性能,加快程序的处理速度。