資料結構 排序

2021-08-07 06:50:19 字數 2486 閱讀 5806

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...