思路:冒泡排序 就是把大的數一個個沉到下面,當然也可以是把小的數一個個浮到上面。
在最外層需要比較n-1次,因為n-1個大的數被沉到了下面,剩下一個自然就是最小的數了。
在這n-1次的里層,還需要亮亮相互比較,這次比較的次數是 n-1-i次,這也比較好理解,每當一輪最大的數沉到下面,之后它就不需要再拿出來比較了,自然比較的次數就需要再 -i。 ?在里層循環要做的也很簡單,兩兩比較,然后如果前面的比后面一個大,交換位置,否則不做操作。
如果想把小的一個個浮到上面,思路一致,代碼如下:
可以將以上代碼優化一下,降低它的時間復雜度。
無非就是在里層循環之前加一個標識符,一開始賦值0,在里層判斷里對標識符進行加操作。這樣如果在某一次進行里層循環時,標識符的值沒有變,就說明,兩兩比較的結果是正確的,不需要調換位置,即已經排序好,所以沒必要繼續循環下去,即時退出即可。