#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);//第一个作为枢轴,
}
相关分类