選擇排序
實現思路:
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 一 選擇排序 原理 現在假設我們給乙個隊伍排序。首先我們找到那個最矮的叫他站第一位,再找出第二矮的叫他站...