一道資料結構題,為什麼希爾排序的空間複雜度為O 1 ,這個是怎麼理解的?求指點,另外快速排序的

2021-04-01 08:12:03 字數 3147 閱讀 3893

1樓:匿名使用者

希爾排序是插入

bai排序的改良版,du插入排序zhi空間複雜度就是o1,因為每dao次就是拿起一個數比較。

內快速排序空間複雜度容說的是 維持這個哨兵元素的空間。

因為快排是通過哨兵來劃分左右陣列,直到劃分成有序為止。假設一個平均情況,第一次劃分出一半一半,第二次在一半中劃分出一半的一半也就是兩個四分之一, 以此類推,那麼需要logn次能把最左邊的劃分做完,也就是logn個哨兵。 當你做完左邊也就可以空出位置做右邊,這時候也是logn , 空間是沒增加的。

求希爾排序的時間空間複雜度。。。還有要是可能的話給講解下是怎麼個回事吧,弄暈了。。謝謝、、、

2樓:nohow絕不

你好,希爾排序的時間複雜度是o(n的1.25次方)~o(1.6n的1.25次方) 這是一個經驗

公式,好像沒回人解釋答

過,就是一句經驗得出的。(不好意思。。沒解釋出來)空間複雜度是o(1) 因為只有一個緩衝單元。

希望對你有幫助。

希爾排序的演算法:

3樓:沐閔馬佳晉

我。。知。。道

加。。我。。私。。聊

資料結構關於希爾排序的一道填空題 5

4樓:匿名使用者

希爾排序基本思想每趟都按照確定的間隔將元素分組,在每一組中進行直接插入排序,使得小的元素可以跳躍式前進,逐步將步長縮小,使得步長為1

第一趟步長為4就是每間隔4個空分一組 ,並對每一組內部進行直接插入排序

答案 :3趟;第一趟後:10,7,-9,0,47,23,1,8,98,36

5樓:葉子離去是紀念

我的答案是:3趟;第一趟後:10,7,-9,0,47,23,1,8,98,36,你先看這答案對嗎?

一個資料結構問題,請問,希爾排序的增量怎麼選取? 100

6樓:at小菜鳥

書上說是取2或者3,效果大概是o(1.1n)~o(1.7)之間,就時間複雜度而言,但是這也還是個比較大的問題,具體還是要看資料,看除錯效果。

7樓:騎豬牧羊晒太陽

由大到小,遞減選取最後一個一定是1

8樓:匿名使用者

你要找專業人員回答專業問題

9樓:匿名使用者

資料結構的問題,請問笑著拍拍的的正量怎麼選取?哎呀,我真不知道怎麼選

資料結構中各種排序的時間複雜度與空間複雜度比較!

10樓:匿名使用者

氣泡排序

是穩定的,演算法時間複雜度是o(n ^2)。 2.2 選擇排序(selection sort) 選擇排序的基本思想是對待排序的記錄序列進行n-1遍的處理,第i遍處理是將l[i..

n]中最小者與l[i]交換位置。這樣,經過i遍處理之後,前i個記錄的位置已經是正確的了。 選擇排序是不穩定的,演算法複雜度是o(n ^2 )。

2.3 插入排序 (insertion sort) 插入排序的基本思想是,經過i-1遍處理後,l[1..i-1]己排好序。

第i遍處理僅將l[i]插入l[1..i-1]的適當位置,使得l[1..i] 又是排好序的序列。

要達到這個目的,我們可以用順序比較的方法。首先比較l[i]和l[i-1],如果l[i-1]≤ l[i],則l[1..i]已排好序,第i遍處理就結束了;否則交換l[i]與l[i-1]的位置,繼續比較l[i-1]和l[i-2],直到找到某一個位置j(1≤j≤i-1),使得l[j] ≤l[j+1]時為止。

圖1演示了對4個元素進行插入排序的過程,共需要(a),(b),(c)三次插入。 直接插入排序是穩定的,演算法時間複雜度是o(n ^2) 。 2.

4 堆排序 堆排序是一種樹形選擇排序,在排序過程中,將a[n]看成是完全二叉樹的順序儲存結構,利用完全二叉樹中雙親結點和孩子結點之間的內在關係來選擇最小的元素。 堆排序是不穩定的,演算法時間複雜度o(nlog n)。 2.

5 歸併排序 設有兩個有序(升序)序列儲存在同一陣列中相鄰的位置上,不妨設為a[l..m],a[m+1..h],將它們歸併為一個有序數列,並儲存在a[l..

h]。 其時間複雜度無論是在最好情況下還是在最壞情況下均是o(nlog2n)。 2.

6 快速排序 快速排序是對氣泡排序的一種本質改進。它的基本思想是通過一趟掃描後,使得排序序列的長度能大幅度地減少。在氣泡排序中,一次掃描只能確保最大數值的數移到正確位置,而待排序序列的長度可能只減少1。

快速排序通過一趟掃描,就能確保某個數(以它為基準點吧)的左邊各數都比它小,右邊各數都比它大。然後又用同樣的方法處理它左右兩邊的數,直到基準點的左右只有一個元素為止。 快速排序是不穩定的,最理想情況演算法時間複雜度o(nlog2n),最壞o(n ^2)。

2.7 希爾排序 在直接插入排序演算法中,每次插入一個數,使有序序列只增加1個節點,並且對插入下一個數沒有提供任何幫助。如果比較相隔較遠距離(稱為 增量)的數,使得數移動時能跨過多個元素,則進行一次比較就可能消除多個元素交換。

d.l.shell於2023年在以他名字命名的排序演算法中實現了這一思想。

演算法先將要排序的一組數按某個增量d分成若干組,每組中記錄的下標相差d.對每組中全部元素進行排序,然後再用一個較小的增量對它進行,在每組中再進行排序。當增量減到1時,整個要排序的數被分成一組,排序完成。

希爾排序是不穩定的,其時間複雜度為o(n ^2)。 排序類別 時間複雜度 空間複雜度 穩定 1 插入排序 o(n2) 1 √ 2 希爾排序 o(n2) 1 × 3 氣泡排序 o(n2) 1 √ 4 選擇排序 o(n2) 1 × 5 快速排序 o(nlogn) o(logn) × 6 堆排序 o(nlogn) 1 × 7 歸併排序 o(nlogn) o(n) √

0 順序查詢, o(n) 二分, o(logn)需要排序分塊 分塊查詢? 不知道..英文是什麼?

直接插入 o(n^2) 快速排序 最壞情況o(n^2) 平均o(nlogn) 起泡 和插入很像吧 o(n^2) 希爾,o(n^x) 1或< )的排序演算法理論最低複雜度是o(nlogn) 證明: 所有可能情況為n! 構造決策樹需要n!

子節點 《為二分操作,所以樹為二叉樹,高度為o(logn!)=o(nlogn)

求一道資料結構題目C語言的!謝了

3種匹配演算法處理起來有點麻煩,寫一下思路吧1 首先開啟檔案,將檔案內容讀到記憶體中 陣列或者動態申請記憶體 2 輸入匹配串和替換串 3 字串匹配演算法有多種,給出兩個參考資料 4 至於匹配時間,可以在演算法執行前獲取當前時間,結束時再獲取當前時間,結束時的時間減去開始時的時間就是演算法時間,比較即...

一道邏輯題,為什麼選d不選a一道邏輯題,為什麼選a不選d?

題中說明,文珊接替了孔瑞的工作,因此排除a選項,上邊提及將他們的工作間進行輪換,而結果是文珊由110室調到了111室,那麼孔瑞就應該從111調至112,故選d。a明顯是錯的,因為是輪崗,如果yw接替kr的工作,和題目ws接替了kr的工作矛盾 推出來的bai結果是 調崗前 調崗後du 110的後勤zh...

C自定義資料結構的排序問題,怎麼用c 定義一個學生資料結構,並用該結構定義五個結構變數和賦值

宣告struct data 建立測試資料 data st new data 4 new data new data new data 按照 data.b 順序排列 data basc st.orderby p p.b toarray 按照 data.b 倒序排列 data bdesc st.orde...