排序演算法(冒泡 插入 選擇 希爾 桶)

2021-10-24 12:52:11 字數 1882 閱讀 3355

一、氣泡排序

基本思想是:兩兩比較相鄰記錄的關鍵字,如果反序則交換

基本**如下:

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 就做元素交換,否則不交換 交換到左右兩部分的邊界處,右邊第乙個元素即為右邊部分最小元素,左邊最後乙個元素即為...