以下是常见的几种分治算法的C语言实现:
- 快速排序算法
快速排序是一种常见的高效排序算法,其基本思想是利用分治的思想,将一个大问题分解成两个子问题,分别对其进行递归解决。
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;
}
void quick_sort(int* arr, int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
quick_sort(arr, low, pivot - 1);
quick_sort(arr, pivot + 1, high);
}
}
- 归并排序算法
归并排序是一种稳定的排序算法,其基本思想是利用分治的思想,将一个大问题分解成两个子问题,分别对其进行递归解决,最后将结果合并。
void merge(int* ar