1 對n個數字進行排序,期中兩兩不同的數字的個數為k,n遠遠大於k,而n的取值區間長度超過了記憶體的大小,時間複雜度最小可以是?
兩兩不同的數字的個數為k,因為不知道確定的數字範圍,桶排序不適合,又因為
n遠遠大於k,
本題使用hash表來統計,首先獲得k個數及其每個數出現的次數,然後對k個數進行排序,排序的 複雜度可忽律不計,實際上就是遍歷一遍n個數字,所以本位複雜度為o(n)。
2 已知陣列元素基本有序的情況下,下面採用那個演算法對陣列排序時間複雜度最低()
直接選擇排序
堆排序
快速排序
插入排序因為陣列元素,基本有序,所以快速排序是最慢的,因為會退化成氣泡排序
選擇排序時間複雜度都是o(n^2),堆排序都是o(nlogn),但是基本有序對插入排序是最好的
因為這樣只需要比較大小,不需要移動,時間複雜度趨近於o(n)
3 n個數值選出最大m個數(3
o(n)
o(nlogn)
o(logn)
o(mlogn)
o(nlogm)
o(mn)劍指offer第30題
1.最簡單的方法:將n個數排序,排序後的前k個數就是最大的k個數,這種演算法的複雜度是o(nlogn)
2.o(n)的方法:利用快排的patition思想,基於陣列的第k個數來調整,將比第k個數小的都位於陣列的左邊,比第k個數大的都調整到陣列的右邊,這樣調整後,位於陣列右邊的k個數最大的k個數(這k個數不一定是排好序的)
3.o(nlogk)的方法:先建立乙個大小為k的最小堆,接下來我們每次從輸入的n個整數中讀入乙個數,如果這個數比最小堆的堆頂元素還要大,那麼替換這個最小堆的堆頂並調整。
4 一組記錄排序碼為(5 11 7 2 3 17),則利用堆排序方法建立的初始堆為
(11 5 7 2 3 17)
(11 5 7 2 13 3)
(17 11 7 2 3 5)
(17 11 7 5 3 2)
(17 7 11 3 5 2)
(17 7 11 3 2 5)------------在排序方法中,元素比較次數與元素的初始排列無關的是()
shell 排序
歸併排序
直接插入排序
選擇排序我能肯定的是d,但是不理解b。我仔細想了一下。
關於歸併可以這麼解釋。首先歸併排序中 merge的任務是把兩個有序陣列合併為乙個有序陣列。假設a,和b為兩個有序陣列,合併為乙個有序陣列c,最好情況比較n/2次(n為陣列c的長度,假設陣列a和陣列b等長,都為n/2),這種情況的前提條件是陣列a中最小的元素比陣列b中最大的元素要大。那麼只要a[0]和b中所有元素都比較過一遍以後,陣列a中的其他元素就不用比較了,所以比較了n/2次。最壞情況元素錯落,a[0]和b[0]比,假設得出a[0]以後,a[0]先和b[1]比,b[1]再和a[1]比,a[1]再和b[2]比..........那就是n-1次。不知道自己分析的對不對,還是有點疑惑。我的疑惑是歸併演算法它的時間複雜度不管最好最壞都是一樣的o(nlogn),它和比較次數難道沒有關係嗎?求大神回答。
n/2和n-1在計算複雜度的時候算作乙個數量級n
有關選擇排序的敘述中正確的是( )
正確答案 : ad您的答案 : bd
a每掃瞄一遍陣列,只需要一次交換b每掃瞄一遍陣列,需要多次交換c選擇排序是穩定的排序方法d空間複雜度為o(1)
1、有關選擇排序的敘述正確的有:
(1)每掃瞄一遍陣列,只需要一次交換。
(2)空間複雜度為o(1)。
(3)選擇排序是不穩定的排序演算法。
2、常見的穩定的排序演算法有:
(1)直接插入排序;
(2)氣泡排序;
(3)歸併排序;
(4)基數排序。
3、常見的不穩定的排序演算法有:
(1)簡單選擇排序;
(2)希爾排序;
(3)快速排序;
(4)堆排序。
關於堆排序複雜度分析的敘述中正確的是( )
正確答案 : abcd您的答案 : acd
a堆排序的時間複雜度為o(nlogn)b整個構建堆的時間複雜度為o(n)c堆排序的空間複雜度為o(1)d堆排序是一種不穩定的排序演算法
關於堆排序複雜度分析敘述正確的有:
(1)堆排序的時間複雜度為o(nlogn);
(2)整個構造堆的時間複雜度為o(n);
(3)堆排序的空間複雜度為o(1);
(4)堆排序是一種不穩定的排序演算法。
資料結構 排序
小小總結了下 希望別不記得 排序型別 排序方法 平均時間 最壞時間 最好時間 穩定空間 插入直接插入 o n2 o n2 o n 穩定o 1 希爾排序 o n3 2 增量序列最後為1,只有公因子1 不穩o 1 選擇簡單選擇 o n2 o n2 o n 穩定o 1 堆排序o n lb n o n lb...
資料結構 排序
郝斌版 資料結構 學習筆記 冒泡 公升序,12比,大放後面,再23比,直至最大的在最後面 插入 2,3,4,依次插入值,保證插入值後的序列為有序的 選擇 後面所有的最小值依次排到最前 快速排序 歸併排序 22排,44排,88排.排序演算法標準 時間,空間,穩定性 排序和查詢的關係 排序是查詢的前提,...
資料結構 排序
1.希爾排序 shellsort 增量序列d n為要排序數的個數 void shellinsertsort int a,int n,int dk n個要排序的數,dk是增量 2 堆排序 已知h s m 除了h s 外均滿足堆的定義 調整h s 使其成為大頂堆.即將對第s個結點為根的子樹篩選,para...