資料結構 四 常用排序演算法 選擇 插入 希爾

2021-07-25 04:00:36 字數 1811 閱讀 3547

選擇排序

實現思路:

1、將需排序的集合設為a,已經排好順的集合為b(在未排序前b集合為空)。

2、每次從a集合中查詢出最大或者最小的元素後放入集合b中

3、同時將該元素從集合a中移除.

4、迴圈執行以上兩步直到集合a為空,b集合中的元素就有序了.

缺點:

效率低,時間複雜度為 o(n*n),是一種只適合小資料集的原地排序演算法。

示範**

1publicclass

commsort

)4 

publicint

compareelement(comparable

a,comparable

b)7 

8  //

交換元素

9public

<

t>

void

exchangeelement(t

a,int

i,int

j)14 

15 

//選擇排序

16 

public

<

t>

void

selectionsort(comparable

<

t>

a)25 

}26 

exchangeelement(a,

i,minindex);

27 

}28 

}29  }

插入排序

實現思路:

1、將需排序的集合設為a,已經排好順的集合為b(在未排序前b集合為空)。

2、依次從集合a中獲取元素並與集合b中的元素一次比較(如:按照陣列下標從大到小的順序),在集合b中找到該元素合適的位置放入(如果是公升序排序,該元素應大於在它前面的元素,小於在後面的元素)

3、迴圈第二步操作直到集合a為空。

優點:

效率很高,特別對部分有序的資料集進行排序效果更好。

缺點:適合小資料集的排序,對資料集比較大的集合進行排序效率較低。

示例**:

1  //插入排序

2public

<

t>

void

insertsort(comparable

<

t>

a)8 

}9  }

希爾排序

實現思路:

1、實現思路與插入排序一樣,唯一的不同是希爾排序在插入排序的基礎上加入了跳躍比較。

2、插入排序的跳躍步進值為一直都為1。

3、希爾排序只有最後一次的輪詢比較,跳躍步進值才為1.

優缺點與插入排序一樣。

示例**:

1  //希爾排序

2public

<

t>

void

shellsort(comparable

<

t>

a)8 

while

(weight

>

0)

14 

}15 

//減小比較步進

16 

weight/=

2;

17 

}18 

}

資料結構 排序演算法 插入排序 選擇排序

今天我們來總結一下資料結構中各種排序演算法。資料結構排序演算法 part1 直接插入排序 思想 當插入第i i 1 個元素時,前面的array 0 array 1 array i 1 已經排好 序,此時用array i 的排序碼與array i 1 array i 2 的排序碼順序進行比較,找到插入...

資料結構與演算法 選擇排序,插入排序

選擇排序 原理 每次選擇最大的或最小的乙個放在最前面後最後面 時間複雜度 o n 2 空間複雜度 o 1 不穩定排序 選擇排序 public static void selectsort int list int temp list minindex list minindex list i lis...

演算法與資料結構 選擇,插入,希爾排序

首先來看比較簡單的選擇排序 selection sort 插入排序 insertion sort 然後在分析插入排序的特徵和缺點的基礎上,介紹在插入排序基礎上改進的希爾排序 shell sort 一 選擇排序 原理 現在假設我們給乙個隊伍排序。首先我們找到那個最矮的叫他站第一位,再找出第二矮的叫他站...