C语言快速排序

对简单的整数数组进行排序,要用最快的方法。... 对简单的整数数组进行排序,要用最快的方法。 展开
 我来答
匿名用户
2013-09-24
展开全部
#include<stdio.h>void quickSort(int *p,int head,int tail)
{
int low=head,high=tail;
int s=p[head];
if(head>=tail)return;
while(low<high){
while(low<high&&p[high]>s)high--;
if(low<high)p[low++]=p[high];
while(low<high&&p[low]<=s)low++;
if(low<high)p[high--]=p[low];
}p[low]=s;
quickSort(p,head,low-1);quickSort(p,low+1,tail);
}void main()
{
int i=0;
int array[10]={3,7,2,8,6,8,4,3,2,9};
quickSort(array,0,9);
for(i=0; i<10; i++)
{
printf("%d ",array[i]);
}
printf("\n");
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-24
展开全部
#include<stdio.h>
main()
{
int a[100],i,n,j,temp,k;
printf("请输入n:");
scanf("%d",&n);
printf("请输入%d个数字:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
//排序
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++)
if(a[k]>a[j]) k=j;
{ temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
printf("排序后:");
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-24
展开全部
#include<stdio.h>
int partition(int *a,int left, int right){
int leftptr,rightptr,pivot,t;
pivot=a[right];
leftptr=left-1;
rightptr=right;
while(1){
while(a[++leftptr]<pivot);
while(right>0&&a[--rightptr]>pivot);
if(leftptr>=rightptr) break;
else {
t=a[leftptr],a[leftptr]=a[rightptr],a[rightptr]=t;
}
}
t=a[leftptr],a[leftptr]=a[right],a[right]=t;
return leftptr;
}
void quicksort(int *a,int left, int right){
int m;
if(right-left<=0) return;
else {
m=partition(a,left,right);
quicksort(a,left,m-1);
quicksort(a,m+1,right);
}
}void main()
{
int i,a[]={3,4,5,6,9,0,8,1,7,2};
printf("快速排序前:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
quicksort(a,0,10);
printf("\n快速排序后:");for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-24
展开全部
排序快慢得看你提供了多少数据,因为数据量的不同,选择最快的方法也不同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式