排序專題之索引排序

2021-07-04 12:44:33 字數 508 閱讀 8476

索引排序 和基數排序的 鏈式法有點相似,

下面來看一下一種索引排序方法

索引陣列s[i]存放的是a[i]陣列的原先應該在的陣列位置,

相當於 a[i]=a[s[i]];

下列演示乙個該內容的演算法:

從0---n-1開始遍歷,如果索引值和當前位置不符合,

就順著索引鏈進行迴圈調整,直到找到等於當前下標值的索引位置為止。

每一輪迴圈所涉及的記錄都調整到位,其索引下標都改為所在位置的小比,

即滿足「索引值等於下標值」,因此不會參與其他的迴圈調整。

void indexsort(record s,int a,int n) //先把數字序列轉化成索引下標

{ //然後再按照索引陣列的值進行排序,

//得到的是排序後的索引的陣列值

int i,j;

for(i=0;i0;j--)

{ if(s[a[j]]

整個調整過程的代價是o(n),空間代價是o(1)

排序專題之索引排序

索引排序 和基數排序的 鏈式法有點相似,下面來看一下一種索引排序方法 索引陣列s i 存放的是a i 陣列的原先應該在的陣列位置,相當於 a i a s i 下列演示乙個該內容的演算法 從0 n 1開始遍歷,如果索引值和當前位置不符合,就順著索引鏈進行迴圈調整,直到找到等於當前下標值的索引位置為止。...

排序專題之歸併排序

歸併排序 基本思想是將兩個或兩個以上有序表合併成乙個新的有序表。假設初始序列含有n個記錄,首先將這n個記錄看成n個有序的子串行,每個子串行的長度為1,然後兩兩歸併,得到?n 2?個長度為2 n為奇數時,最後乙個序列的長度為1 的有序子串行 在此基礎上,再進行兩兩歸併,如此重複,直至得到乙個長度為n的...

排序專題4 計數排序

1 基於比較的排序 基於比較的排序有很多 如 插入排序 選擇排序 選擇排序 歸併排序 基於非比較的排序 如 基數排序 桶排序 計數排序 對於n個待排序元素,在未比較時,可能的正確結果有n 種。在經過一次比較後,其中兩個元素的順序被確定,所以可能的正確結果剩餘n 2種 確定之前兩個元素的前後位置的情況...