每次從尚未排好的陣列範圍裡選出乙個最小的放到正確的位置。
void selection_sort(int array, int size)
swap(array, lhs, min);
}}
從陣列裡選出乙個基準元素,通過交換位置讓它前面的元素都比它小、後面的元素都比它大,最後分而治之。
void quicksort(int array, int left, int right)
}swap(array, store, pivit);
quicksort(array, left, store - 1);
quicksort(array, store + 1, right);
}}
每次從尚未排好的陣列範圍取出乙個元素,放到已排好的陣列範圍中的正確位置。(現實生活中排序時一般用的就是類似這種演算法)
void insertion_sort(int array, int size)
}
保持未排陣列為堆積樹,每次摘取根結點,即可取出當前未排範圍中的最大/最小值放入正確位置。
void sift_down(int heap, int root, int end)
}void heapsort(int array, int size)
}
嗯,基本上常用的就是這些啦~
什麼,沒有氣泡排序?好吧,我至今都想不明白像氣泡排序這樣寫起來沒有選擇排序方便、想起來沒有插入排序方便
常用排序演算法
筆者最近學習演算法,學了很久也只弄懂了幾個排序演算法,在這裡曬一下下,作為以後參考之用。一 為什麼要研究排序問題 許多計算機科學家認為,排序演算法是演算法學習中最基本的問題,原因有以下幾點 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 ...