选择排序:
#include <stdio.h>
int main()
{
int a[10]= {2,4,7,1,6,9,8,3,0,5};
int i,j,temp;
for(i=0; i<9; i++)
{
for(j=i+1; j<10; j++)
{
if(a[i]>a[j])//假定 a[i]是最小值,假设不成立时交换
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0; i<10; i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
冒泡排序:
#include <stdio.h>
#define N 10 //宏定义需要输入数字的数量
int main()
{
int i,j,temp;
int a[N]; //没有提前宏定义a[]里面不能写N
for(i=0; i<N; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i<N-1; i++)
{
for(j=0; j<N-1-i; j++)
{
if(a[j]>a[j+1]) //第(i+1)个数后面一个数字比较,条件成立则互相交换
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp; //简单的三步转换
}
}
}
for(i=0; i<N; i++)
{
printf("%d",a[i]);
}
return 0;
}
冒泡排序法是两两依次比较,并做交换,交换的次数多。
选择排序法是每次循环找出最值,循环结束后将最值调整到合适位置,交换的次数少。