论坛» 高校专区» 坤创E-Geek/天科大新电社

排序算法——冒泡与选择

助工
2018-09-02 22:40 1楼

通常,在程序中的数据处理时,会用到各种算法来进行处理,以达到提高抗干扰、过滤等作用。本文主要介绍在排序算法中的最经典、最常用的冒泡和选择排序算法。

(一)冒泡排序

这个名词的由来很好理解,一般在河水、水杯里的气泡往上冒,就叫做冒泡,气泡刚冒

出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,大家只需要了解即可。

冒泡排序的原理:

冒泡排序对相邻元素进行两两比较,如果顺序不对,就要对其位置进行调换,一直到排序完成。比如第一趟比较:首先比较第一个和第二个数的大小,将小数放前,大数放后。然后比较第二个数和第三个数的大小,再将小数放前,大数放后。以此类推,直到比较完最后两个数,第一趟就比较完了。重复第一趟过程,若有n个数,就要比较n-1趟。

c语言中可以使用双重循环,外层循环控制比较多少趟,内层循环每一趟比较的次数。

599210-20170619085503132-2067568088.gif图片来自网上

算法代码:

#include #define N 6 int main() { int a[N],i,j,t; for(i=0;ia[j]) { t=a[j-1];a[j-1]=a[j];a[j]=t; } } } printf("The sorted numbers: \n"); for(i=0;i
        

冒泡排序缺点:

但是冒泡排序也有一定的缺点,就是在比较过程中小的数不能一次到位,会导致效率低。所以一般不会选择冒泡排序,虽然冒泡排序书写是最简单的,但是平均性能是没有选择排序排序好的。



(二)选择排序

选择排序是每一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

选择排序的原理:

若有n个数,第一轮排序从1~n个数中找到最小的数,与第一个数进行交换,第二轮排序从2~n个书中找到最小的数,与第二个数进行交换。以此类推,经过n-1轮的处理将会得到n个数的由小到大排序。

timg.gif图片来自网上


算法代码:

#include #define N 5 int main() { int a[N],i,j,k,t; printf("Input numbers:\n"); for(i=0;ia[j])k=j; if(k!=i) { t=a[i];a[i]=a[k];a[k]=t; } } printf("The sorted numbers: \n"); for(i=0;i
        


选择排序同样有着耗时长的问题,只是排序法就有一大堆(插入法排序、希尔法排序),更何况还有其它的,这是一条不归路啊。未完待续。。。。。。



高工
2018-09-03 08:54 2楼

谢谢爱学习的楼主分享

院士
2018-09-07 18:02 3楼
谢谢分享。
高工
2018-09-17 11:53 4楼

加油~!

菜鸟
2018-10-11 17:08 5楼

,加油!

菜鸟
2018-10-13 17:44 6楼

棒鸭!

专家
2018-11-10 18:47 7楼

好文章,顶一下

菜鸟
2018-11-13 23:03 8楼

算法配上动态图,超容易理解,谢谢分享

菜鸟
2018-11-21 21:43 9楼


菜鸟
2018-11-28 20:38 10楼

可以

共13条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]