冒泡排序法:
冒泡排序是程序语言经典算法,用了N次来理解整个过程,现在能自己写出来了。原理就是 两两比较,小的靠右,从前往后,从后往前。共循环N-1次,每次比较当前位置次,每次两个比较使较大数后移位置。以下是思维图解:

代码如下:
#include
int main()
{ int i,u,z[4],e;
for(i=0;i<=3;i++)
{
scanf("%d",&z[i]);
}
for(i=0;i<=3;i++)
for(u=0;u<=3-i;u++) { if(z[u]>=z[u+1])
{
e=z[u];
z[u]=z[u+1];
z[u+1]=e;
}
}
for(i=0;i<=3;i++)
printf("%d",z[i]);
return 0;
}
选择排序法:
基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。思维图解及代码如下:

#include<stdio.h>
int main()
{ int i,u,z[4],e,k;
for(i=0;i<=3;i++)
{
scanf("%d",&z[i]);
}
for(i=0;i<=3;i++)
{u=i;
for(e=i+1;e<=3;e++)
{
if(z[e]>z[u])
{
k=z[e];
z[e]=z[u];
z[u]=k;
}
}
}
for(i=0;i<=3;i++)
{
printf("%d",z[i]);
}
return 0;
}
后记:
必须要承认搞不好真的能混掉,我敲了一遍,冒泡法的精髓是通过一个for循环对比前后两个,将其排序,然后通过++,使其比较位置后移一位,能够将最大的数沉底。替换法在于从a【0】处开始比较出比a【0】大的替换掉a【0】,继续后移发现比a【0】大的替换a【0】,整个子过程中a【0】一直代表本次小循环中的最大值。 两种方法的相同点是第一个for循环均是用来控制执行的次数。
