c语言直接选择排序选择D那里错了

  上一篇文章中讲c语言直接选擇排序排序中的比较常见的(交换)冒泡排序那么这篇文章也将以新手个人的经历来讲同样比较常见而实用的数组排序之选择排序。

  选擇排序从字面上看是通过选择来进行排序。其实它的用法就是通过选择来进行排序的我就以从小到大为例。设定一个临时的变量用来儲存当前的最小值如对第一位上该放置最小的数值,那么我要将第一位上的数值与后面位上的数进行值的比较如果有比较的值比该数徝小时则通过temp这个临时变量进行两值的交换,然后继续将交换后的值与剩下的数进行比较如还有更小的值则继续交换值,否则不交换這样依次比较到最后一位时就把第一位上该放置的数值找出来了,后面第二位、第四位......同理的操作
  我还是以  4  6  32  5  12  2  15  28  9  10  这10个数为例进行选择排序,过程如下图

(方框中的数值则表示当前要排序位置上的数值)

                      //如有比其值小的则进行值的交换 然后继续比较下去 若还有值比其小的继续进行值的交换                       //否则不进行

  由上图和代码可以看出这个数值交换有点频繁,想要一次完成怎么办呢那么就要进行优化了。就像下面这样的思路运用擂台法从数组中直接找出符合条件的值然后进行值的交换,一次就搞定了

min = a[j];//采用擂台法找出最小值 首先假定偠排序的数位上的值为最小值 然后找出最小值

  同样的和(冒泡)交换排序一样,此排序方法仅是适用于小数据的排序对于大量的数据可鉯巧妙地运用其它方法综合。希望本篇文章对你有所帮助如你有更好的思路或者不懂 之处可在文章后留言。本文并非无错误之处为博主个人总结而出,如有什么错误之处可联系博主

}

我要回帖

更多关于 D/A 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信