C语言中数组排序问题
一个数组array[100]用C写出一个排序的程序,要求最好是执行最快的。int*array另,冒泡排序的话这道题怎么写?怎么理解?...
一个数组array[100]
用C写出一个排序的程序,要求最好是执行最快的。
int *array
另,冒泡排序的话这道题怎么写?
怎么理解? 展开
用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;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#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;
}
}
冒泡法原理简单,但其缺点是交换次数多,效率低。
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;
}
}
冒泡法原理简单,但其缺点是交换次数多,效率低。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询