您的位置:首页 > 理论基础 > 数据结构算法

交换类排序-快速排序

2014-04-16 17:57 211 查看
#include<stdio.h>
#define N 20
int main()
{
void QickSort(int *,int ,int);
int i,a
;
printf("Enter twenty numbers:\n");
for(i=0;i<N;i++)
scanf("%d",a+i);
QickSort(a,0,N-1);
for(i=0;i<N;i++)
printf("%d ",a[i]);
return 0;
}

void QickSort(int *a,int l,int r)/*对从a[l]到a[r]的元素进行排序*/
{
int temp,i=l,j=r;
if(l<r)
{
temp=a[l];
/*这个排序完成了一趟排序,即将数组中小于temp的元素放在左边,大于temp的元素放在右边*/
while(i!=j)
{
while(j>i&&a[j]>temp)/*从右向左扫描找到一个小于temp的元素*/
--j;
if(i<j)
{
a[i]=a[j];/*放在temp左边*/
++i;
}
while(i<j&&a[i]<temp)/*从左往右扫描,找到一个大于temp的元素*/
++i;
if(i<j)
{
a[j]=a[i];/*放在temp右边*/
--j;
}
}
a[i]=temp;/*将temp放在最终位置*/
QickSort(a,l,i-1);
QickSort(a,i+1,r);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息