算法系列三:冒泡排序
原理
每一次遍历全排序把当前趟要排的最大的数排好,数组有n个元素,遍历全排序n-1次把数组里的n-1个数都排在当前趟的最后面最大数位置,在数组里n-1个数按大小顺序排对到相应的位置,排好后最后一个数也就在要排的位置上(第一个位置)不用排了
优化1
每一趟进去全排序时,对于数组后端已经排好序的不用再去遍历到去判断去排序了,第一趟进去已排好序的个数是0,第二趟进去时排好序的个数是1,第n趟进去时排好序的个数是n-1,即每一趟里要遍历的次数都有在减少,每一趟里面要遍历的次数是原来全遍历次数-已排好序的个数,原来的把数组全遍历到全能拿来比较的次数为数组长度-1,要减的已排好序的个数等于第几趟数减1(第1趟为0,第2趟为1),这个要减的数刚好等于控制趟数的i,减i就行了
优化2
可能经过某一趟排序后数组就已经全部有序了,不一定要进行n-1趟一定确定全排好序的趟数,我们可以安排一个旗,用来判断此趟里是否有进行排序交换,如果某趟里没有进行排序交换,说明在上一趟时数组就已经排好序了,此时就不要再往下继续进行了,退出
方法实现