1.冒泡算法
#include ''stdio.h'
void main()
{
int a[10]={82,12,4,56,100.....}
n=10;
for(i=0;i<n-1;i++) // 代表第几次循环
for(j=0;j<n-1-i;j++) // 代表这一次要比较大小多少回
if(a[j]>a[j+1]) //当后面的值比前面的值小时,两个值互换
{ t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<n;i++) // 输出排序后的数组a[i];
printf("%d ",a[i] );
}
2.选择排序法
#include <stdio.h>
#define N 20 //定义N=20
void main()
{
int a[N],i,j,p,t;
for(i=0;i<N;i++)
scanf("%d",&a[i]); //得到a[N]数组
for(i=0;i<N-1;i++) //从a[0]开始比较
{ p=i;
for(j=i+1;j<N;j++) //如果后面的数值比前面的数值大的话,就交换数组中的值,否则不交换。进入下个循环。
if(a[j]<a[p])
p=j;
if(p!=i)
{ t=a[p];
a[p]=a[i];
a[i]=t;
}
}
for(i=0;i<N;i++) //输出排序好的数组
printf("%d ",a[i]);
printf("\n");
}
3.插入法
#include <stdio.h> //这是降序插入排序法,个人感觉跟冒泡法近似
main()
{
int a[10],i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a); // 一样的 先得到数组a;
for(i=1;i<10;i++)
{
t=a[i]; //先把要插入的数据存入变量t中;
for( j=i-1 ; j>=0 && t>a[j] ; j-- ) //然后从a[1]开始与前面的数组比较大小,当满足条件时交换数组中的值
a[j+1]=a[j];
a[j+1]=t; // 比较完成,把变量t中的值插入空余的数组中。
}
for(i=0;i<10;i++) //排序输出数组
printf("%d ",a);
printf("\n");
}
上面三个排序方法。冒泡法最好理解,但运行时处理过程较多。排序较慢。
选择法很
插入法很少用,在插入时教难理解数组中的变化。数组中的数值随时在传递。数组中有值的数组变量可能在下次就没有数值。理解起来较难。