📅  最后修改于: 2023-12-03 15:39:49.860000             🧑  作者: Mango
排序算法是计算机科学中最基本的算法之一,可以采用多种不同的算法实现。在 C 编程语言中对数组进行排序通常使用快速排序(Quick Sort)或归并排序(Merge Sort)。
快速排序是一种基于分治思想的排序算法。具体实现过程如下:
代码实现如下:
void quicksort(int arr[], int low, int high) {
int pivot, i, j, temp;
if (low < high) {
pivot = low;
i = low;
j = high;
while (i < j) {
while (arr[i] <= arr[pivot] && i <= high) {
i++;
}
while (arr[j] > arr[pivot] && j >= low) {
j--;
}
if (i < j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[j];
arr[j] = arr[pivot];
arr[pivot] = temp;
quicksort(arr, low, j - 1);
quicksort(arr, j + 1, high);
}
}
归并排序也是基于分治思想的排序算法,具体实现过程如下:
代码实现如下:
void merge(int arr[], int low, int mid, int high) {
int i, j, k, temp[high - low + 1];
i = low;
k = 0;
j = mid + 1;
while (i <= mid && j <= high) {
if (arr[i] < arr[j]) {
temp[k] = arr[i];
k++;
i++;
}
else {
temp[k] = arr[j];
k++;
j++;
}
}
while (i <= mid) {
temp[k] = arr[i];
k++;
i++;
}
while (j <= high) {
temp[k] = arr[j];
k++;
j++;
}
for (i = low; i <= high; i++) {
arr[i] = temp[i - low];
}
}
void mergesort(int arr[], int low, int high) {
int mid;
if (low < high) {
mid = (low + high) / 2;
mergesort(arr, low, mid);
mergesort(arr, mid + 1, high);
merge(arr, low, mid, high);
}
}
以上两种算法都是基于递归实现的。实际使用时需要注意处理递归深度和栈溢出问题。
排序数组问题是常见的编程问题,针对不同的场景和需求可以采用不同的排序算法。在 C 编程语言中实现快速排序和归并排序比较常见,本文对其基本实现过程进行了讲解。