C语言中数组排序问题

一个数组array[100]用C写出一个排序的程序,要求最好是执行最快的。int*array另,冒泡排序的话这道题怎么写?怎么理解?... 一个数组array[100]
用C写出一个排序的程序,要求最好是执行最快的。

int *array

另,冒泡排序的话这道题怎么写?
怎么理解?
展开
 我来答
匿名用户
2009-12-02
展开全部
最快的方法:

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

int comp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main(void)
{
int a[100],i;
srand((unsigned int)a);
for (i = 0; i<100; i++) { /*建立数组*/
a[i]=rand()%1000;
}
qsort(a,100,sizeof(int),comp); /*排序*/
for (i = 0; i<100; i++) { /*输出排序后的结果*/
printf("%d ",a[i]);
}
putchar('\n');
return 0;
}
//---------------------------------------------------------------------------

冒泡排序的方法:

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int a[100],i,j,t;
srand((unsigned int)a);
for (i = 0; i<100; i++) { /*建立数组*/
a[i]=rand()%1000;
}
for (i = 0; i<100; i++) { /*冒泡排序*/
for (j=0; j<100-i-1; j++) {
if (a[j]>a[j+1]) {
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}

for (i = 0; i<100; i++) { /*输出排序后的结果*/
printf("%d ",a[i]);
}
putchar('\n');
return 0;
}
//---------------------------------------------------------------------------
匿名用户
2009-12-02
展开全部
冒泡法大家都较熟悉。其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n]。同理对a[1],a[2],...a[n-1]处理,即完成排序。下面列出其代码:

void bubble(int *a,int n) /*定义两个参数:数组首地址与数组大小*/
{
int i,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++) /*注意循环的上下限*/
if(a[i]>a[j]) {
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}

冒泡法原理简单,但其缺点是交换次数多,效率低。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式