用c语言写出用分治算法方法快速实现排序算法 ,输入数组为:{9,4,6,2,5,8,4,5,6,22},限定数组排序范围,输出递增顺序排序的数组
时间: 2024-10-25 14:18:46 浏览: 29
在C语言中,我们可以使用分治策略编写快速排序算法来对数组进行排序。以下是一个简化版的快速排序函数,它接受数组、起始索引和结束索引作为参数,并只对指定范围内进行排序:
```c
#include <stdio.h>
void quickSort(int arr[], int low, int high) {
if (low < high) {
// 选取分区点
int pivot = arr[low];
int i = low, j = high;
while (i <= j) {
// 将所有小于pivot的元素移到左边
while (arr[i] < pivot && i < high)
i++;
// 将所有大于pivot的元素移到右边
while (arr[j] > pivot)
j--;
// 交换元素
if (i <= j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
// 对左右两个子区间的数组递归进行排序
quickSort(arr, low, j);
quickSort(arr, i, high);
}
}
int main() {
int arr[] = {9, 4, 6, 2, 5, 8, 4, 5, 6, 22};
int n = sizeof(arr) / sizeof(arr[0]);
// 为了限定排序范围,我们先获取指定范围的索引
int start = 0;
int end = n - 1; // 这里假设整个数组需要排序,如果只想排序部分,可以根据需求改变end
// 对指定范围内的元素进行排序
quickSort(arr + start, start, end);
printf("Sorted array within the specified range: ");
for (int i = start; i <= end; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
当你运行这个程序时,它会在数组`arr`的指定范围内(这里是整个数组,因为未提供特定范围),按照升序输出排序后的结果。
阅读全文