#include<stdio.h>void main(){ int a[10]; int i; int p(int a[], int low, int high); void Zong(int a[], int n); void q(int a[], int low, int high); printf("请输入10个数字,用空格隔开!!\n"); for (i = 0; i < 10; i++) scanf_s("%d", &a[i]); printf("快速排序法由小到大排序后:\n"); Zong(a, 11); for (i = 0; i < 10; i++) printf("%d ", a[i]);}int p(int a[], int low, int high) { int key = a[low], p; while (low<high) { while (low<high && a[high] >= key) --high; p = a[low]; a[low] = a[high]; a[high] = p; while (low<high && a[low] <= key) ++low; p = a[high]; a[high] = a[low]; a[low] = p; } a[low] = key; return low; } void q(int a[], int low, int high) { int j; if (low<high) { j = p(a, low, high);//讲第一次排序结果作为枢轴 q(a, low, j - 1);//递归调用排序low到j-1 q(a, j + 1, high);//递归调用排序j+1到high } } void Zong(int a[], int n) { q(a, 1, n);//第一个作为枢轴, }
目前暂无任何回答
- 0 回答
- 0 关注
- 1259 浏览
添加回答
举报
0/150
提交
取消