描述:
一次比較相鄰的兩個元素,如果它們順序錯誤就交換位置;每次迴圈後最後的元素會是我們期待的數(最大或最小);針對所有元素重複以上步驟,除了第乙個。直到兩層迴圈全部執行完畢,排序完成。
時間複雜度:o(n²)
空間複雜度:o(1)
**實現:
function
bubblesort(arr) }}
return arr;
}複製**
描述:
首先在未排序佇列中找出最大(小)的元素,存放到已排序佇列中的起始位置;然後再從剩餘未排序佇列中繼續找出最大(小)的元素,存放到已排序佇列的末尾;以此類推,直到排序完畢。
時間複雜度:o(n²)
空間複雜度:o(1)
**實現:
function
selectionsort(arr)
}arr[i] = [arr[minindex], arr[minindex] = arr[i]][0];
}return arr;
}複製**
描述:
將第乙個元素看做已排序佇列,剩餘元素為未排序佇列;從未排序佇列取出乙個元素,在已排序佇列從後向前掃瞄,若該元素(已排序)大(小)於新元素(未排序佇列取出的),則將該元素移到下一位置;直到該元素小(大)於或者等於新元素,將新元素插入到位置。重複以上步驟直到所有元素排序完成。
時間複雜度:o(n²)
空間複雜度:o(1)
**實現:
function
insertsort(arr)
arr[preindex + 1] = current;
}return arr;
}複製**
描述:
選擇乙個合適的元素a(一般是第乙個元素)作為排序基準,將未排序佇列中比a小和比a大的分別放在兩側,將兩側的子陣列重複以上步驟(遞迴),直到最後只剩下乙個元素(遞迴出口),排序完成。
時間複雜度:o(n㏒₂n)
空間複雜度:o(n㏒₂n)
**實現:
function
quicksort(arr)
return quicksort(left).concat([number], quicksort(right));
}複製**
常用排序演算法
筆者最近學習演算法,學了很久也只弄懂了幾個排序演算法,在這裡曬一下下,作為以後參考之用。一 為什麼要研究排序問題 許多計算機科學家認為,排序演算法是演算法學習中最基本的問題,原因有以下幾點 l有時候應用程式本身需要對資訊進行排序,如為了準備客戶賬目,銀行需要對支票賬號進行排序 l很多演算法將排序作為...
常用排序演算法
一 簡單排序演算法 由於程式比較簡單,所以沒有加什麼注釋。所有的程式都給出了完整的執行 並在我的vc環境 下執行通過。因為沒有涉及mfc和windows的內容,所以在borland c 的平台上應該也不會有什麼 問題的。在 的後面給出了執行過程示意,希望對理解有幫助。1.冒泡法 這是最原始,也是眾所...
常用排序演算法
排序演算法 最好時間 平均時間 最壞時間 輔助空間 穩定性 直接插入排序 o n o n 2 o n 2 o 1 穩定 希爾排序 o n 1.3 o 1 不穩定 直接選擇排序 o n 2 o n 2 o n 2 o 1 不穩定 堆排序 o n x lbn o n x lbn o n x lbn o ...