七種排序演算法整理

2021-10-04 22:22:24 字數 2544 閱讀 7706

1.氣泡排序(交換排序)

依次比較相鄰元素,將較大的值交換到右邊,那麼第一趟走完,陣列中的最大值已經在最後一位了,接下來就把第二大的數歸位,第三大的數歸位…

public

static

void

dubblesort

(int

arr)}}

}

2.選擇排序(交換排序)設定最小元素的索引minindex,假設當前索引的元素為最小值minindex=i,如果出現後面元素比當前索引的元素小,就替換最小元素索引minindex=j,最後如果minindex!=i,就交換兩個索引的元素。

public

static

void

xzsort

(int

arr)}if

(minindex!=i)

}}

3.快速排序(交換排序)以陣列中的乙個元素為基準,將陣列中比基準小的元素放在基準的左邊,比基準大的元素放在基準的右邊。

public

static

void

quicksort

(int

arr,

int start,

int end)

arr[low]

=arr[high]

;while

(arr[low]

<=strad&&low

arr[high]

=arr[low];}

arr[low]

=strad;

//處理所有小的元素

quicksort

(arr,start,low)

;//處理所有大的元素

quicksort

(arr,low+

1,end);}

}

4.插入排序將乙個陣列分成兩部分,一部分為有序的,然後將無序部分的值乙個乙個插入有序的那部分中

}}5.希爾排序希爾排序,屬於插入排序的一種。

}}6.歸併排序

public

static

void

gbsort

(int

arr,

int low,

int high)

}private

static

void

merge

(int

arr,

int low,

int middle,

int high)

else

}while

(iwhile

(j<=high)

for(

int q=

0;q)}

7.堆排序將陣列轉換成樹的結構,進行排序

//堆排序	(公升序,大頂堆)

public

static

void

heapsort

(int

arr)

for(

int i=arr.length-

1;i>

0;i--)}

private

static

void

maxheap

(int

arr,

int size,

int index)

if(rightnode

>arr[max])if

(max!=index)

}

七種排序演算法

排序方法 平均情況 最好情況 最壞情況 輔助空間 穩定性插入排序 o n 2 o n o n 2 o 1 穩定希爾排序 o n log n o n 2 o n 1.3 o n 2 o 1 不穩定選擇排序 o n 2 o n 2 o n 2 o 1 不穩定氣泡排序 o n 2 o n o n 2 o ...

七種排序演算法總結

根據排序過程中借助的主要操作,將7種內排序演算法按照下圖所示進行分類。將7種演算法的各種指標進行對比,如下表所示。從平均情況來看,顯然最後3種改進演算法要勝過希爾排序,並遠遠勝過前3種簡單演算法。從最好情況看,反而冒泡和直接插入排序要更勝一籌,也就是說,如果待排序列總是基本有序,反而不應該考慮四種複...

七種常用排序演算法總結

1.氣泡排序 bubble sort package com.zha.wmls.sort 氣泡排序 每一輪找出乙個最大的,放在最後面,穩定 時間複雜度為n 2 public class bubblesort long befortime system.currenttimemillis sort a...