冒泡排序
交换排序主要有冒泡排序和快速排序
实现思路:
对于n个数,最坏情况下需要进行n-1趟比较。
第1趟:依次比较第n-1和n-2索引处的数据,如果发现后一个数据大于前一个数据,就交换,再比较n-2与n-3索引处的数据...以此类推。经过第1趟比较最大的数据排在最前面。
第2趟:依次比较第n-1和n-2索引处的数据,大的往前放,第2趟比较结束之后第2大的数据排在第二的位置(注意:前面已经比较出来的数不在比较范围内,故循环次数应该减1)
......
实际上,冒泡排序每趟交换结束之后,不仅能把当前最大值选出排在最前面,还能部分理顺前面其他的元素。所以,一旦某一趟没有发生交换,即可提前结束排序。
算法实现
算法总结:
冒泡排序算法的时间效率是不确定的,在初始数据有序的情况下,执行一趟冒泡排序。
最佳时间复杂度:O(n)
空间复杂度为:O(1)
冒泡排序是稳定的。