快速排序

#include<stdio.h>
#include<stdlib.h>
int partition(int a[],int i,int j)
{
int temp=a[i];//a[i]为关键字
while(i<j)
{
while(a[j]>=temp&&i<j)//由尾指针向前遍历寻找小于关键字的数据
j--;
if(i<j)
a[i++]=a[j];//找到数据赋值给a[i],头指针后移
while(a[i]<=temp&&i<j)//由头指针向后遍历寻找大于关键字的数据
i++;
if(i<j)
a[j--]=a[i];//找到数据赋值给a[j],尾指针前移
}
a[i]=temp;
return i;
}
void QuickSort(int a[],int i,int j)
{
int k;
if(i<j)
{
k=partition(a,i,j);
QuickSort(a,i,k-1);
QuickSort(a,k+1,j);

}
}
int main()
{
int i, n, a[100];
printf("请输入需要排序元素的个数:");
scanf("%d", &n);
printf("随机生成的数组为:");
for (i = 0; i < n; i++)
{
a[i] = rand() % 100 + 1;
printf("%d ", a[i]);
}
a[i] = '\0';
printf("\n");
QuickSort(a,0,n-1);
printf("\n快速排序结果为(由小到大):");
for (i = 0; i < n; i++)
printf("%d ", a[i]);
}

posted on 2018-01-30 15:42  这个有点难诶  阅读(88)  评论(0编辑  收藏  举报

导航