選擇排序:在每次迴圈中找出最小的元素,將其移至開頭,第二次找出次小元素,將其移至第二位,以此類推
演算法複雜度:o(n*n)
//泛型函式模板
template
void selectionsort(t arr,int n)
}}
也可以將**結構簡化,把if判斷語句移動到第二個迴圈判斷內部:
void insertionsort(t arr,int n)
}}
插入排序的優點在於:如果找到了合適的插入位置,可以提前終止迴圈,因此,在資料量近乎有序的情況下,反而比一些演算法複雜度為o(nlogn)的演算法更為高效。
但這裡呼叫的是系統中提供的swap()函式,本質上是三次賦值的交換,還可以做進一步修改,使得演算法更為高效:
其核心思想是:將要尋找合適插入位置的第i個元素臨時儲存,再判斷其放在當前位置是否合適,跟前乙個位置的元素進行比較,如果前乙個位置的元素大於該位置的元素,直接讓前乙個位置的元素值覆蓋當前位置的元素,以此類推,直到該元素找到了合適的位置並將該位置原有的元素覆蓋
void insertionsort(t arr.int n)
//找到合適的位置,滿足:
//該位置的元素不再大於e的值
//此時的j即為合適的位置
arr[j]=e;
}}
學習 排序演算法 快排 選擇 冒泡 桶排序
稍微複習 學習 了一下排序的演算法 選擇 冒泡 桶 快排等 下面的 和講解也是這幾種排序,至於歸併 基數啥的想單獨開一篇部落格 以下單獨 均涉及巨集定義,可以先看思路再到最後看巨集定義內容 本部落格針對洛谷p1177排序模板 並已通過大資料對拍 為公升序排序 快速排序 stl 好,直接sort 想降...
演算法總結 一 排序演算法總結
1.輸入 n個數,a1,a2,an 2.輸出 n個數,a1 a2 an 使得a1 a2 an 1.in place sort 不占用額外記憶體或占用常數記憶體 插入排序 選擇排序 氣泡排序 堆排序 快速排序 out place sort 歸併排序 計數排序 基數排序 桶排序。2.穩定排序 插入排序 ...
幾種排序演算法總結(冒泡 選擇 插入 快速)
今天總結了幾個比較基礎常用的排序演算法。寫下來,以後可以直接參考。var o return arr 插入排序 穩定 假設待排序的記錄存放在陣列r 1 n 中,初始時,r 1 自成乙個有序區,不需要比較,無序區r 2.n 從i 2起到i n為止,依次將r i 插入當前有序區。帶插入的記錄r i 從右向...