排序 排序演算法整理

2021-10-08 02:32:55 字數 1847 閱讀 1008

經常零零散散的用到排序演算法,將幾類常見的總結下來:

/**

* 時間複雜度o(n^2),空間複雜度o(1)

* 穩定排序

* @param arr

*/public

static

void

insersort

(int

arr)

else

} arr[j+1]

= tmp;

}}

/**

* 氣泡排序

* 時間複雜度 o(n^2),空間複雜度o(1)

* 穩定排序

* @param arr

*/public

static

void

bubblesort

(int

arr)}}

}

/**

* 選擇排序

* 時間複雜度o(n^2),空間複雜度o(1)

* 非穩定排序

* @param arr

*/public

static

void

selectsort

(int

arr)}if

(minflag != i)

}}

/**

* 快速排序

* 時間複雜度 o(nlogn),空間複雜度

* @param arr

* @param low

* @param high

*/public

static

void

quicksort

(int

arr,

int low,

int high)

}public

static

intpartiton

(int

arr,

int low,

int high)

arr[low]

= arr[high]

;while

( low < high && arr[low]

<= tmp)

arr[high]

= arr[low];}

arr[low]

= tmp;

return low;

}

/**

* 時間複雜度o(nlogn),空間複雜度o(n)

* 穩定排序

* @param arr

* @param low

* @param high

* @param tmp

*/public

static

void

mergesort

(int

arr,

int low,

int high,

int[

] tmp)

}private

static

void

merge

(int

arr,

int low,

int mid,

int high,

int[

] tmp)

else

}while

(j <= mid)

while

(k <= high)

for(

int index=

0;index)}

演算法 排序演算法整理 快速排序

快速排序是在氣泡排序的基礎上改進而來的,氣泡排序每次只能交換相鄰的兩個元素,而快速排序是跳躍式的交換,交換的距離很大,因此總的比較和交換次數少了很多,速度也快了不少。快速排序的演算法思想稍微有點複雜,但是還是比較容易理解的。快速排序的思想就是挖坑填坑 分治法 比如下面這個陣列,我們首先選擇乙個基準數...

演算法 排序演算法整理 計數排序

在氣泡排序,選擇排序,快速排序等比較型排序演算法中,我們最快只能做到o nlogn 的時間複雜度。而計數排序的時間複雜度是線性的,但是計數排序需要很多額外的空間。計數排序的主要步驟是 1 找出待排序陣列中最大和最小的數 2 根據最大和最小的數的值建立乙個陣列,用來記錄陣列中每乙個數的數量,陣列的大小...

排序演算法整理 快速排序

public static void quick sort int arr int l,int r quick sort arr,l,j quick sort arr,j 1,r 快排的思路 首先一組資料 找乙個基準數 這裡選用陣列的第一位做基準資料 之後i從前往後掃,找到乙個大於 或等於 基準資料...