經典排序演算法的應用

2022-03-11 07:38:30 字數 787 閱讀 3682

問題:給定陣列arr,元素個數為n,將其排序後元素移動的順序不超過k,其中k《分析:

1.氣泡排序,選擇排序,快速排序,歸併排序等排序時間複雜度與陣列狀態無關。

2.插入排序複雜度為o(n*k)

3.改進後的堆排序可以做到o(n*logk)

改進後的堆排序:

1.考慮到每次移動不超過k,則最小的元素在0..k中。

2.將0...k進行建小堆,得到最小元素arr[0]。

3.彈出堆頂,將下乙個元素不在堆內的元素置入堆頂,下濾。

4.重複3,直到無法新增新元素時,堆的最後乙個元素置入堆頂,刪除堆的最後乙個元素,下濾,彈出堆頂。

5.堆為空,陣列排序完成。

vector percdown(vector a,int p,int

r) }

a[parent]=key;

return

a; }

vector

sortelement(vector a, int n, int

k) else

}return

res;

}

1.如果沒有空間複雜度限制,可以用雜湊表實現,時間複雜度o(n)

2.可以先排序,後判斷是否相同的值挨在一起。

3.空間複雜度o(1)的演算法中,考慮堆排序,且不能使用非遞迴。

1.確定最後位置last,last1,last2.

2.每次比較a1,a2的最後兩個元素,大的放入a1的尾部

3.重複,直到a2為空。得到陣列a1就是有序陣列。

經典排序演算法的經典問題

問題描述 乙個陣列只含有三種元素 0,1,2,不使用計數排序,將0放在1的左邊,2放在1的右邊。分析 1.可借鑑快排中劃分的思想。將陣列分為,arr,2.遍歷arr,當發現0時,0區向右擴,發現2時,2區向左擴,3.當前元素進入2區時,結束。vector sortthreecolor vector ...

經典排序演算法

排序分為內部排序和外部排序,內部排序是指待排序的資料都是在記憶體中的,例如陣列 外部排序指待排序資源在記憶體外,例如對檔案的排序。此篇說的是內部排序。通俗地來說,內部排序就是將一堆資料按一定規則對它進行排序。排序又分為穩定排序和不穩定的排序,如果初始序列ai,ak有序 ai ak 排序後變成了ak,...

經典排序演算法

1 氣泡排序 bubble sort 最簡單的排序方法是氣泡排序方法。這種方法的基本思想是,將待排序的元素看作是豎著排列的 氣泡 較小的元素比較輕,從而要往上浮。在氣泡排序演算法中我們要對這個 氣泡 序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的元素的順序是否正確。...