刚学了简单的排序法,就是冒泡排序法和简单选择排序法。它们的区别就在前者取一个最大值,后者要取一个最小值。
冒泡排序法的思想是就是比较第一个数和第二个数,如果第一个大于第二大就交换,直到最后两个数比较,完成一轮排序,将最大的数至于最后一位;然后下面每一轮循环都把找到的最大的由最后一位往前来一位,最后实现从小到大的排序。
而选择排序就是找出所有数中最小的,将其与第一个数交换,这是第一趟排序,将最小数放在第一位上,然后完成第二趟排序将第二小的放在第二位,以此类推完成从小到大的排序。
下面是两个排序的源程序:
冒泡排序
#include<stdio.h>
#define N 10
int main()
{
int a[N];
int i;
for (i=0; i<N; i++)
{
scanf ("%d",&a[i]);
}
for (i=0; i<N-1; i++)
{
int j;
int tem;
for (j=0; j<N-1-i; j++)
{
if (a[j]>a[j+1])
{
tem = a[j];
a[j] = a[j+1];
a[j+1] = tem;
}
}
printf ("第d%次排序:",i);
int k;
for (k=0; k<N; k++)
{
printf ("%4d",a[k]);
}
printf ("\n");
}
return 0;
}
选择排序
#include<stdio.h>
#define N 10
int main()
{
int a[N];
int i;
for (i=0; i<N; i++)
{
scanf ("%d",&a[N]);
}
int j;
int tem;
int min;
for (i=0; i<N-1; j++)
{
min = i;
for (j=i+1; j<N; j++)
{
if (a[min]>a[j])
{
min = j;
}
}
if (a[i] != a[min])
{
tem = a[min];
a[min] = a[i];
a[i] = tem;
}
printf ("第%d次排序;",i);
int k;
for (k=0; k<N; k++);
{
printf ("%4d",a[k]);
}
printf ("\n");
}
return 0;
}