#include <stdio.h>
#include <ctype.h>
//每次划分子集时,该算法总是选取各个子数组的中间元素
void qsort(int v[],int left,int right)
{
int i,last;
void swap(int v[],int i,int j);
if(left >=right) /*如果只有一个元素*/
return;/*返回,不执行*/
swap(v,left,(left + right)/2);
last = left;
for(i = left + 1;i<=right;i++)
if(v[i]<v[left])
swap(v,++last,i);
swap(v,left,last);/*恢复划分子集的元素,那个标准可以不动了*/
qsort(v,left,last - 1);
qsort(v,last+1,right);
}
void swap(int v[],int i,int j)
{
int temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
int main()
{
int v[1000];
int i=0;
char c;
printf("请输入待排序的数组元素:\n");
while((c = getchar())!='\n')
{
if(isdigit(c))
v[i++] = c - '0';
}
v[i] = '\n';
qsort(v,0,i-1);
i = 0;
while(v[i]!='\n')
printf("%d ",v[i++]);
return 0;
}
快速排序C语言实现