冒泡排序

冒泡排序是一种简单的快速排序。
基本思路:对一个有n个元素的数列进行排序。进行k趟排序,每一趟找出数列中最大的关键字(最简单的交换方式),并将这个最大的关键字放在这一趟排序所遍历的最后一个位置上。其中要注意的是冒泡排序结束的条件是:在一趟排序过程中没有进行交换记录的操作。所以k值是由实际的序列来决定的。


例如:对序列49,38,65,97,76,13,27,49,55,4 进行起泡排序过程如下:
              第1趟:38 49 65 76 13 27 49 55 4 97
              第2趟:38 49 65 13 27 49 55 4 76 97
              第3趟:38 49 13 27 49 55 4 65 76 97
              第4趟:38 13 27 49 49 4 55 65 76 97
              第5趟:13 27 38 49 4 49 55 65 76 97
              第6趟:13 27 38 4 49 49 55 65 76 97
              第7趟:13 27 4 38 49 49 55 65 76 97
              第8趟:13 4 27 38 49 49 55 65 76 97
              第9趟:4 13 27 38 49 49 55 65 76 97
            第10趟:4 13 27 38 49 49 55 65 76 97

具体实现如下:

 

 

 

bubbleSort(),bubbleSort_better();上面代码中的这两个方法,均是冒泡排序的算法,不同的是前者要经过n趟排序;而后者的排序趟数是标记在一趟排序过程中没有进行交换记录的操作的count决定的。用在一趟排序过程中没有进行交换记录的操作作为循环结束的条件是合理:因为若一个数列本来就是一个有序数列,或者说只需要进行一两次的排序就能达到有序数列目的的时候,bubbleSort()仍然需要经过n趟排序,而bubbleSort_better()的趟数肯定是要小于n的。

冒泡排序的时间复杂度为O(n2).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值