超模金小妹:C语言编程问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 16:21:06
编写程序,输入一组整数,将它们排序后由小到大输出?

第一种方法 交换法
#includes"stdio.h"
main()
{
int a[11],i,t,j;
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
for(i=1;i<=10;i++)
for(j=i+1;j<=10;j++)
if(a[i]<a[j])
t=a[i],a[i]=a[j],a[j]=t;
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
}

第二种方法 选择法
#include"stdio.h"
main()
{
int a[11],i,j,k,t;
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
for(i=1;i<=9;i++)
{
k=i;
for(j=i+1;j<=10;j++)
if(a[k]>a[j]) k=j;
if(k!=i) t=a[i],a[i]=a[k],a[k]=t;
}
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
}

第三种方法 冒泡法
#include"stdio.h"
main()
{
int a[11],i,jt;
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
for(i=1;i<=9;i++)
for(j=1;j<=10-i;j++)
if(a[j]>a[j+1]) t=a[j],a[j]=a[j+1];a[j+1]=t;
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
}

综合几种方法 当然是冒泡法最简单了

排序算法!

最简单就是用冒泡法了,就是不断的对比、交换来达到目的,源代码我就不写了,说这些你应该也知道该这么做了。
在深一点还可以用二分法(把数组分成两分对比排序)、二叉树、也可以用快排

当然是冒泡法了每次都减少一次循环不就行了吗这是对于多的要是少了就可以用交互数的方式

排序博大精深啊!
有简单的 选择排序 插入排序 冒泡排序等O(n^2)的算法
还有 2路归并排序甚至K路归并排序 快速排序 堆排序的 O(nlogn)的算法
还有 桶排(O(1)) 基排序(O(tN))等等

去买本讲算法的书吧~ 一般的算法书讲排序都很全面的