选择排序与冒泡排序自解

C基础算法 cyanprobe 9年前 (2015-10-21) 4194次浏览 已收录 0个评论

冒泡排序法:

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

#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]交换,使有序序列不断增长直到全部排序完毕。思维图解及代码如下:
xzpx

 #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循环均是用来控制执行的次数。


CyanProbe , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:选择排序与冒泡排序自解
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址