排序演算法基礎總結

2021-09-11 11:52:46 字數 3143 閱讀 2352

/***

* @氣泡排序

* @bubblesort

* @param arr

*/public

static

void

bubblesort

(int

arr)

for(

int i = arr.length-

1;i>

0;i--)}

}

/***

* @選擇排序

* @selectionsort 兩個指標,乙個遍歷指標,乙個指向當前的最值

* @param arr

*/public

static

void

selectionsort

(int

arr)

for(

int i =

0; i < arr.length -

1; i++

)swap

(arr, i, minindex);}

}

/***

* @插入排序

* @insertionsort

* @param arr

*/public

static

void

insertionsort

(int

arr)

for(

int i =

1; i < arr.length;i++)}

}

/***

* @歸併排序

* @mergesort

* @param arr

*/public

static

void

mergesort

(int

arr)

mergesort

(arr,

0, arr.length -1)

;}public

static

void

mergesort

(int

arr,

int l,

int r)

int mid = l +

((r - l)

>>1)

;mergesort

(arr, l, mid)

;mergesort

(arr, mid +

1, r)

;merge

(arr, l, mid, r);}

//兩個有序陣列 (l-m) (m+1 - r)的合併

public

static

void

merge

(int

arr,

int l,

int m,

int r)

while

(p1 <= m)

while

(p2 <= r)

for(i =

0; i < help.length; i++

)}

/***

* @快速排序 應用:荷蘭國旗問題

* @quicksort

* @param arr

*/public

static

void

quicksort

(int

arr)

quicksort

(arr,

0, arr.length -1)

;}public

static

void

quicksort

(int

arr,

int l,

int r)

}public

static

int[

]partition

(int

arr,

int l,

int r)

else

if(arr[l]

> arr[r]

)else

}swap

(arr, more, r)

;return

newint

;}

/***

* @堆排序

* 1.求大根堆

* 2.交換首尾

* 3.通過heapify下沉首節點

* @heapsort

* @param arr

*/public

static

void

heapsort

(int

arr)

for(

int i =

0; i < arr.length; i++

)int size = arr.length;

swap

(arr,0,

--size)

;while

(size >0)

}public

static

void

heapinsert

(int

arr,

int index)

}public

static

void

heapify

(int

arr,

int index,

int size)

swap

(arr, largest, index)

;//交換最大值

index = largest;

left = index *2+

1;}}

/***

* @公共呼叫方法

* @採用兩次異或交換兩個數

* @swap a,b

* @param arr

* @param i

* @param j

*/public

static

void

swap

(int

arr,

int i,

int j)

基礎演算法3 桶排序和排序演算法總結

比較器 定義乙個比較器函式,如果返回負數,認為第乙個引數應該排在前面,如果返回是正數,認為第二個引數應該排在前面,如果返回0,認為誰放前面無所謂。可用於 基於比較的排序。桶排序思想下的排序 桶排序思想下的排序都不是基於比較的排序 2 時間複雜度為o n 額外空間複雜度為o n 3 應用範圍有限,需要...

三種基礎排序演算法總結

一 氣泡排序 1 演算法思想 1 兩層迴圈,外層迴圈i從0開始,內層迴圈從j i 1開始 2 如果ary i ary j 則交換其值 3 直到外層迴圈到length 1 2 主演算法實現 public static void bubblesort int ary 3 穩定性 int ary algo...

基礎排序總結

o n 2 級別的演算法主要包括 選擇排序,插入排序,冒泡法排序,希爾排序等 選擇排序 選擇排序,將後面未排序陣列中最小的與前面的元素交換 1 template 2 void selectionsort t arr,int n 9 10swap arr i arr minindex 11 12 插入...