在C语言中 编写一个程序实现从小到大排序
在C语言中设有一组数{1,-2,53,49,144,65,267,98,112},编写一个程序实现从小到大排序...
在C语言中 设有一组数{1,-2,53,49,144,65,267,98,112}, 编写一个程序实现从小到大排序
展开
2个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main(int argc,char **argv)
{
int a[]={1,-2,53,49,144,65,267,98,112};
int i;
qsort(a,sizeof(a)/sizeof(int),sizeof(int),cmp);
for(i=0;i < sizeof(a)/sizeof(int);++i)
printf("%d ",a[i]);
printf("\n");
return 0;
}
如果要自己实现排序函数的话
#include <stdio.h>
void qsort(int *a,int left,int right)
{
int p=(left+right)/2; //以中间数作为主元
int k=a[p];
int i=left,j=right;
while(i < j)
{
//从左边开始将大于主元的数放在主元右边
while((i <= p) && (a[i] <= k))
++i;
if(i < p)
{
a[p]=a[i];
p=i;
}
//从右边开始将小于主元的数放在左边
while((j >= p) && (a[j] >= k))
--j;
if(j > p)
{
a[p]=a[j];
p=j;
}
}
a[p]=k;
//如果左边的数大于1个则递归左边
if(p-left > 1)
qsort(a,left,p-1);
//如果右边的数大于1个则递归右边
if(right-p > 1)
qsort(a,p+1,right);
}
int main(int argc,char **argv)
{
int a[]={1,-2,53,49,144,65,267,98,112};
int i;
qsort(a,0,sizeof(a)/sizeof(int)-1);
for(i=0;i < sizeof(a)/sizeof(int);++i)
printf("%d ",a[i]);
printf("\n");
return 0;
}
2016-01-15 · 知道合伙人教育行家
天雨下凡
知道合伙人教育行家
向TA提问 私信TA
知道合伙人教育行家
采纳数:17564
获赞数:65144
爱电脑、爱数学、爱音乐; 熟悉VB、C/C++、JAVA; EXCEL与VBA有所研究…… 数学,一些会,一些被忘却……
向TA提问 私信TA
关注
展开全部
#include <stdio.h>
int main(void)
{
int i,j,temp;
int num[9]={1,-2,53,49,144,65,267,98,112};
for(i=0;i<9;i++)
for(j=i+1;j<9;j++)
{
if(num[j]<num[i])
{
temp=num[i];
num[i]=num[j];
num[j]=temp;
}
}
for(i=0;i<9;i++)
printf("%5d",num[i]);
printf("\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询