結構體排序演算法 10,結構體排序演算法

時間 2025-01-26 02:05:15

結構體排序演算法

1樓:網友

用陣列實現鏈狀儲存結構。

2樓:願做溫柔暖人

用陣列儲存結構指標然後再排序就好了。

資料結構排序

3樓:甘雅青

氣泡排序基本過程,從首元素開始,每次兩兩比較,前面的比後面的小,則位置不變,否則交換位置,每一趟比較,都能得到待排子序列中的最大值,就像小的值冒上去,大的值沉下來。

第一趟排序:待排序列 【23,14,48,25,5,19】

14 23 ) 48 25 5 19 :23與14交換。

14 (23 48) 25 5 19 :23與48不交換。

14 23 (25 48) 5 19 :25 與48交換。

所以第一趟排序的結果:【14 23 25 5 19】 48 :這個序列的最大值48就到最後了。

第二趟排序:待排序列 【14 23 25 5 19】 48,只排方括號裡的就行了。

第二次排序後的結果: 【14 23 5 19】 25 48,次大的25排出來了。

第三次排序後的結果: 【14 5 19】 23 25 48,再次大的23排出來了。

第四次排序後的結果: 【5 14】 19 23 25 48

第五次排序後的結果: 5 14 19 23 25 48 ,這個也是最終排序結果。

4樓:monkey家園

初始:第一趟:,第二趟:,第三趟:,第四趟:,

關於資料結構排序演算法的問題

5樓:網友

選擇排序。

插入排序:每次比較後最多移掉乙個逆序,因此與氣泡排序的效率相同。但它在速度上還是要高點,這是因為在氣泡排序下是進行值交換,而在插入排序下是值移動,所以直接插入排序將要優於氣泡排序。

直接插入法也是一種對資料的有序性非常敏感的一種演算法。在有序情況下只需要經過n-1次比較,在最壞情況下,將需要n(n-1)/2次比較。

選擇排序:簡單的選擇排序,它的比較次數一定:n(n-1)/2。也因此無論在序列何種情況下,它都不會有優秀的表現(從上100k的正序和反序數。

據可以發現它耗時相差不多,相差的只是資料移動時間),可見對資料的有序性不敏感。它雖然比較次數多,但它的資料交換量卻很少。所以我們將發現它在一般情。

況下將快於氣泡排序。

氣泡排序:在最優情況下只需要經過n-1次比較即可得出結果,(這個最優情況那就是序列己是正序,從100k的正序結果可以看出結果正是如此),但在最壞情況下,即倒序(或乙個較小值在最後),下沉演算法將需要n(n-1)/2次比較。所以一般情況下,特別是在逆序時,它很不理想。

它是對資料有序性非常敏感的排序演算法。

堆排序:由於它在直接選擇排序的基礎上利用了比較結果形成。效率提高很大。

它完成排序的總比較次數為o(nlog2n)。它是對資料的有序性不敏感的一種演算法。但堆排序將需要做兩個步驟:

是建堆,二是排序(調整堆)。所以一般在小規模的序列中不合適,但對於較大的序列,將表現出優越的效能。

基數排序:在程式中採用的是以數值的十進位位分解,然後對空間採用一次性分配,因此它需要較多的輔助空間(10*n+10), 但我們可以進行其它分解,如以乙個位元組分解,空間採用連結串列將只需輔助空間n+256)。基數排序的時間是線性的(即o(n))。

由此可見,基數排序非常吸引人,但它也不是就地排序,若節點資料量大時宜改為索引排序。但基數排序有個前提,要關鍵字能象整型、字串這樣能分解,若是浮點型那就不行了。

6樓:

選擇排序。

選擇排序的演算法原理是:第一趟從n個待排關鍵字中找出最小的關鍵字放到第乙個位置,如果要找到最小關鍵字則必須所有元素都進行比較,所以第一趟要比較n-1次;第二趟從剩下的n-1的元素中再通過n-2次的比較找出最小的元素………以此類推,不管初始有沒有序,它都一共要進行n-1趟排序共n(n-1)/2次比較,時間複雜度始終是o(n平方)

至於其他的,拿插入排序舉例:插入排序的基本思想是每次將乙個待排的記錄按其關鍵字大小插入到前面已經排好序的子序列中。試想,如果已經排好序的子序列是123,待排記錄為45,插入4時,只要和3比較一次就知道排在3後面,對5排序時只要與4比較一次就知道該排在4後面,共比較2次。

如果已經排好序的子序列是234,待排記錄為15,插入1時,它要從後往前依次比較3次才能找到自己的位置,同樣對5排序時只要與4比較一次,共比較4次。由上例可知,插入排序會隨著初始資料集的順序不同而比較次數不同。

btw,基數排序不是基於關鍵字比較的排序演算法。

7樓:匿名使用者

來這看的是不是都是sdu的。我咋覺得選擇排序可以及時終止而最好情況下n-1呢???

資料結構 排序

8樓:網友

1全部某省高考學生按高考成績排序,選用哪個排序方法,具體要怎麼做,時間複雜度是多少?

答】1、這個問題,從演算法的特點來考慮,乙個省的高考人數一般來講是非常之多,所以要選擇比較快的演算法,如希爾排序,快速排序,堆排序。時間複雜度為希爾排序 n^ 快速排序nlog(n),堆排序nlog(n)

2如果再結合成績的分數的特徵,由三位陣列成,這樣考慮,鏈結基數排序是最好的,時間複雜度能達到線性階o(n)

3、以上所說不是根據已經儲存的資料排序,而是先儲存,後排序,可以考慮雜湊儲存,採用鏈位址法解決衝突。則可以很容易實現排序及各分數段的人數。

【資料結構與演算法】堆排序演算法回顧

9樓:張三**

堆排序是利用堆這種資料結構而設計的一種排序演算法,堆排序是一種選擇排序,它的最壞,最好,平均時棚旁間複雜度均為o(nlogn),它也是不穩定排序。

堆排序的李含應用場景主要有:topk問題,優先順序佇列等。

原理:

1.將存放在array[0,…,n-1]中的n個元素建成初始堆;

2.此時,堆頂元素該堆的最大值。

3.將堆頂元素與堆底元素進行交換,則序列的最大值即已放到正確的位置;

4.但此時堆被破壞,將堆頂元素向下調整使其繼續保持大根堆的性質,再重複第3,4步,直到堆中僅剩下乙個元素為止。

1.初始化堆經過初始化堆的過程,現在可以發現,最大的數已經在堆頂了。

2.堆排序現在我們要做的是將整個堆變成有序的堆。

堆排序是一種選擇排序,整體主要由構建初始堆+交換堆頂元素和末尾元素並重建堆兩部分組成。其中構建初始堆經推導複雜度為o(n),在交換並重建堆的過程中,需交換n-1次,而重建堆的過程中,根據完全二叉樹的性質,[log2(n-1),log2(n-2)..1]逐步遞減,近似為nlogn。

所以堆排序時哪和笑間複雜度一般認為就是o(nlogn)級。

cqsort對結構體排序,C 中sort怎麼對結構體陣列中的字串陣列排序?

藍色 你如果要按照x的大小順序牌還是y 的大小順序牌,int comp const void a,const void b vc6 幫助裡的對qsort 裡compare函式指標引數的要求 compare void elem1,void elem2 the routine must compare ...

資料結構中什麼是排序演算法的穩定性

幻想v飛翔 比如說 5 2 3 5 1 排序後可能是 5 5 3 2 1 也可能是5 5 3 2 1,前者是穩定的,後者是不穩定的。冒泡,選擇有穩定性,快拍沒有 資料結構中幾種常見的排序演算法之比較 冒泡。複雜度n平方。適用於陣列 插入排序。複雜度n平方。適用於連結串列 快排。複雜度nlog n 希...

c語言結構體定義,C語言結構體定義

c語言結構體定義 struct為結構體關鍵字,tag為結構體的標誌,member list為結構體成員列表,其必須列出其所有成員 variable list為此結構體宣告的變數。結構體是c語言中聚合資料型別 aggregatedatatype 的一類。結構體可以被宣告為變數 指標或陣列等,用以實現較...