java 常見排序總結

2021-09-11 02:05:02 字數 3153 閱讀 9739

氣泡排序

氣泡排序可以說是所有排序中最簡單的排序,它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。

/**

* 冒泡法排序

* 需要排序的整型陣列

*/public

static

void

bubblesort01

(int

numbers)}}

}

插入排序

插入排序是由n-1趟排序組成,對於p=1到n-1趟,插入排序保證從0到p的元素都已排序狀態。如圖:

* 插入排序

** @param a

* @param */

public

static

comparable

<

?super anytype>>

void

insertionsort

(anytype[

] a)

}for

(anytype i : a)

}選擇排序

選擇排序就是在未排序序列中找到最小元素,存放到排序序列的起始位置,再從剩餘未排序元素中繼續尋找最小元素,然後放到排序序列起始位置。以此類推,直到所有元素均排序完畢。

/**  

* 選擇排序

*

* @param numbers

*/public

static

void

selectsort

(int

numbers)

}

temp = numbers[i]

;

numbers[i]

= numbers[k]

;

numbers[k]

= temp;

}}

希爾排序

1、將包含n個元素的陣列,分成n/2個陣列序列,第乙個資料和第n/2+1個資料為一對…

2、對每對資料進行比較和交換,排好順序;

3、然後分成n/4個陣列序列,再次排序;

4、不斷重複以上過程,隨著序列減少並直至為1,排序完成。

/**

* 希爾排序

** @param a

* @param */

public

static

comparable

<

?super anytype>>

void

shellsort

(anytype[

] a)}}

for(anytype i : a)

}

快速排序

快速排序是數列中挑出乙個元素,稱為「基準」,重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割之後,該基準是它的最後位置。這個稱為分割(partition)操作。遞迴地把小於基準值元素的子數列和大於基準值元素的子數列排序。

public

static

void

quicksort

(int

numbers,

int start,

int end)

}while

(i <= j);if

(start < j)

quicksort

(numbers, start, j);if

(end > i)

quicksort

(numbers, i, end);}

}

歸併排序

歸併排序簡單的可理解為先將陣列進行拆分出a,b將等分陣列並將其進行初始排序,然後a,b進行比較,將數字小的值放入新陣列c中,並將比較後大的值繼續與其另一陣列中的值進行比較,以此類推,如圖所示:

**如下:

/**

* 歸併排序

* @param a

* @param */

public

static

comparable

<

?super anytype>>

void

mergesort

(anytype[

] a)

}private

static

comparable

<

?super anytype>>

void

mergesort

(anytype[

] a, anytype[

] tmparray,

int left,

int right)

}private

static

comparable

<

?super anytype>>

void

merge

(anytype[

] a, anytype[

] tmparray,

int leftpos,

int rightpos,

int rightend)

else

}while

(leftpos <= leftend)

while

(rightpos <= rightend)

for(

int i =

0; i < numelements; i++

, rightend--

)}

常見排序演算法總結(java版)

總結幾種常用到的排序演算法,如下 1.選擇排序 2.插入排序 3.氣泡排序 4.歸併排序 5.快速排序 6.堆排序 為方便起見,規定陣列為整形陣列,並要按遞增排序,並定義幾個方法 private static void exch int a,int i,int j 1.選擇排序 選擇排序的思想就是 ...

常見的排序演算法總結(JAVA實現)

插入排序 直接插入排序 希爾排序。選擇排序 直接選擇排序 堆排序。交換排序 氣泡排序 快速排序。歸併排序。基數排序。思路 對於一組資料,先將第乙個和第二個數排序,再將第三個數插入之前已經有序序列中形成新的有序序列,以此類推。也就是對於第n個數的排序,是將這第n個數插入到前n 1個數的有序序列中,從而...

常見排序總結

選擇排序 每一趟選取第i個關鍵字,與剩下的n i關鍵字進行比較,找出最大的值與剛開始選擇的i下標對應的值交換 第一趟 0 1 n 1 第二趟 1,2 n 1 應用場景 最好最壞情況時間複雜度都是o n 2 空間複雜度為o 1 最壞情況 對相對有序的一組資料排序 不穩定 由其交換引起的 適用於數量不大...