一、氣泡排序
基本思想是:兩兩比較相鄰記錄的關鍵字,如果反序則交換
基本**如下:
int
arr=
;for
(int i =
0,t; i
1; i++)}
}for
(int i :arr)
二、插入排序
基本思想是:通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。
基本**如下:
int
arr=
;for
(int i =
0,t,j; i < arr.length; i++
) arr[j+1]
=t;}
for(
int i :arr)
三、簡單選擇排序
首先選出陣列中最小的元素,將它與陣列中第1個元素交換,然後找出次小的元素,並將它與陣列中第2個元素交換按照這種方法一直進行下去,直到整個陣列排完序
int
arr=
;for
(int i =
0,maxix,maxvalix,t; i
1; i++)}
if(maxix != maxvalix)
}for
(int i :arr)
四、希爾排序
先將整個待排元素序列分割成若干子串行(由相隔某個「增量」的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序(增量為1)。
基本**如下:
int
arr=
;int step=arr.length,t;
while
((step=step/2)
>2)
}}for(
int i :arr)
system.out.
println()
;for
(int i =
0,j; i
) arr[j+1]
= t;
}for
(int i:arr)
五、桶排序
它假設輸入資料服從均勻分布,我們將資料分別放入到 n 個桶內,先對桶內資料進行排序,然後遍歷桶依次取出桶中的元素即可完成排序。
原理圖:
例如輸入資料:21,8,6,11,36,50,27,42,0,12。
然後分別放入對應的桶內排序,最後依次遍歷桶取出元素即可完成排序。
基本**如下:
int
arr=
;final
int u =10;
int[
] bucket =
newint
[u][arr.length]
;int
ixs =
newint
[u];
for(
int i =
1,count,t;
; i*=10)
if(count==0)
break
;for
(int j =
0,ix=
0; j
for(
int j =
0; j
for(
int i:arr)
演算法 插入選擇氣泡排序
演算法 排序 n 2 時間複雜度是o n 2 的排序有插入,選擇,冒泡。由於演算法思想比較簡單易懂,也不複雜。我們就簡單講講。插入排序 乙個元素是有序的,從第二個元素開始,依次將每個元素插入到前面序列的對應位置,最終整個序列有序。外層n 1趟。void insertsort int a,int n ...
排序演算法 冒泡 插入 選擇排序
分析排序演算法從下列3個方面進行 排序演算法執行效率 時間複雜度 1 最好情況下時間複雜度 2 最壞情況下時間複雜度 3 平均情況時間複雜度 排序演算法記憶體消耗 空間複雜度,其中原地排序特指空間複雜度為o 1 的排序演算法 排序演算法穩定性 1 穩定的排序演算法 待排序的序列中存在值相等的元素,經...
排序演算法 冒泡,插入,選擇排序
演算法原理 從小到大排序為例 將陣列分成兩部分,左邊部分為已排序部分,右邊部分為未排序部分 從未排序部分的右側開始比較遍歷,相鄰兩個元素比較,保證小元素在前,即如果num j num j 1 就做元素交換,否則不交換 交換到左右兩部分的邊界處,右邊第乙個元素即為右邊部分最小元素,左邊最後乙個元素即為...