对于排序在编程初步只讲了顺序排序,当时自己也没能很好的理解。
晚自修在教室自习,请教学长问题时候,教了我如何使用快排以及快排的工作原理。
#include <stdio.h>
void quicksort(int a[],int left,int right);
int main(int argc, char *argv[])
{
int i,h;
while(scanf("%d",&h)!=EOF)
{
int a[h];
for(i=0;i<h;i++)
{
scanf("%d",&a[i]);
}
quicksort(a,0,(h-1));
for(i=0;i<h;i++)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}
void quicksort(int a[],int left,int right)
{
int i,j;
if(left<right)
{
i=left;
j=right;
int temp=a[left];
do{
while(a[j]>temp && i<j) j--;
if(i<j)
{
a[i]=a[j];
i++;
}
while(a[i]<temp && i<j) i++;
if(i<j)
{
a[j]=a[i];
j--;
}
}while(i<j);
a[i]=temp;
quicksort(a,left,i-1);
quicksort(a,i+1,right);
}
}