随机生成10个100以内的数,利用快速排序算法排序c语言,并附上注释
时间: 2024-05-12 07:17:02 浏览: 96
好的,让我来回答你的第一个问题。
以下是一个C语言程序,可以随机生成10个100以内的数,并使用快速排序算法进行排序。代码中附有详细的注释,希望能帮助你理解算法的实现过程。
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 快速排序函数
void quick_sort(int a[], int left, int right) {
if (left >= right) return; // 递归终止条件
int i = left, j = right, pivot = a[left]; // 设定基准值
while (i < j) {
// 从右向左找第一个小于等于基准值的数
while (i < j && a[j] > pivot) j--;
if (i < j) a[i++] = a[j];
// 从左向右找第一个大于等于基准值的数
while (i < j && a[i] < pivot) i++;
if (i < j) a[j--] = a[i];
}
a[i] = pivot; // 将基准值插入正确的位置
quick_sort(a, left, i - 1); // 递归排序左半部分
quick_sort(a, i + 1, right); // 递归排序右半部分
}
int main() {
int a[10];
srand((unsigned)time(NULL)); // 用时间作为随机数种子
printf("原始数组:\n");
for (int i = 0; i < 10; i++) {
a[i] = rand() % 100; // 生成0到99的随机数
printf("%d ", a[i]);
}
printf("\n排序后数组:\n");
quick_sort(a, 0, 9);
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
请注意,本程序使用的是基本的快速排序算法,具有时间复杂度O(nlogn),在实际应用中可能存在性能问题。如果需要更高效的排序算法,可以考虑使用堆排序、归并排序等其他排序算法。
同时,为了保证您的私密信息不被泄露,请保管好您的所有私密信息。
阅读全文