JavaScript冒泡排序詳解

冒泡排序概述

冒泡排序是通過遍歷待排序的數列,一次比較兩個元素,根據大小調換位置,直到把最大的或最小的冒出來的排序方式。與選擇排序、插入排序是比較常見的排序方式,也非常好理解。

冒泡排序平均時間複雜度是:O(n^2)

  • 步驟是:

1、先建立兩個循環,外循環用於遍歷整個數組,內循環遍歷待排序的區間。

2、內循環每次都從第一項開始,將該項與後項進行比較,再兩兩交換,一直到待排序結尾。

3、重複第二項,一直到數組遍歷完。

可以看成是用手捏住第一個位置,往右邊一個一個比較交換,把最大或最小的找出來,放在最後1位。然後再拿第一位置的數字,逐個比較,找出第二大的數字來放在倒數第2的位置。以此類推,把所有的數字都篩選一遍即可。

冒泡排序執行過程分析

JavaScript冒泡排序詳解

冒泡排序實現

  • 自左往右逐個將最大項冒出:

兩個循環,外循環是整個數列,內循環是數列減去已排好序的數列。

JavaScript冒泡排序詳解

  • 自右往左逐個將最小項冒出:
JavaScript冒泡排序詳解

冒泡排序的優化

  • 加入一個標記,用來記錄上一趟排序中是否發生過交換,如果沒有進行過交換,說明當前數組已經排好序了,則不必再繼續後面的遍歷。
JavaScript冒泡排序詳解


分享到:


相關文章: