快速排序(Quick Sort)是一种有效的排序算法。虽然算法在最坏的情况下运行时间为O(n^2),但由于平均运行时间为O(nlogn),并且在内存使用、程序实现复杂性上表现优秀,尤其是对快速排序算法进行随机化的可能,使得快速排序在一般情况下是最实用的排序方法之一。
快速排序被认为是当前最优秀的内部排序方法。
下面用C语言实现快速排序:
字符
void quickSort(char* arr,int startPos, int endPos)
{
int i,j;
char ch;
ch=arr[startPos];
i=startPos;
j=endPos;
while(i
{
while(arr[j]>=ch &&
i
arr[i]=arr[j];
while(arr[i]<=ch &&
i
arr[j]=arr[i];
}
arr[i]=ch;
if(i-1>startPos) quickSort(arr,startPos,i-1);
if(endPos>i+1) quickSort(arr,i+1,endPos);
}
void main()
{
char ch[]="qwer5tyuiopasdfghjklzxcvbnm";
quickSort(ch,0,26);
printf("\n%s\n",ch);
}
数字
void quickSort(int *r,int t, int w)
{
int i,j;
int x;
if (t
{x=r[t];
i=t;
j=w;}
while(i
{
while(r[j]>=x &&
i
if (i
{r[i]=r[j];i++;}
while(r[i]<=x &&
i
if (i
{r[j]=r[i];j--;}
}
r[i]=x;
if(i-1>t) quickSort(r,t,i-1);
if(w>i+1) quickSort(r,i+1,w);
}
void main()
{
int x[]={12,13,2,56,4,78,5,44,80,32};
int i,t,w;
t=0;w=9;
quickSort(x,t,w);
for(i=0;i<10;i++)
printf("%d ",x[i]);
}