JAVA的六種排序方法

2021-08-09 09:23:58 字數 2030 閱讀 4750

冒泡 

publicstringbubble_sort(stringarr) }}

returnarr;

選擇publicstringselect_sort(stringarr) }}

returnarr;}插入

publicstringinsert_sort(stringarr)else}}

returnarr;

希爾publicstringshell_sort(stringarr)else}}

}returnarr;

快速publicstringquick_sort(stringarr)

publicstringquick_sort(stringarr,intstart,intend)

//將第乙個值作為中間值小的排序在左

,大的排序在右

string mid = arr[start];

//定義雙向的游標

intlow = start;

inthigh = end;

//控制游標向中間匯聚

while(low

//當右邊的值比中間值小

,將小的值移動到中間值左邊

arr[low] =arr[high];

//當左邊的值比中間值小

,游標右移

while(low

//當左邊的值比中間值大

,將大的數值移動到中間值右邊

arr[high] =arr[low];}//

游標匯聚中間點

,將此時

low游標處的儲存中間值

,此時中間值左邊一定小

,右邊一定為大值

arr[low] = mid;

//將中間值左側陣列遞迴呼叫

quick_sort(arr, start, low - 1);

//將中間值右側陣列遞迴呼叫

quick_sort(arr, low + 1, end);

//將排序後的結果返回

returnarr;

混合staticlistmerge_sort(listlist)

// 進行二分分解

直至拆解為單個集合

intnum = list.size() / 2;

// 遞迴呼叫

拆解為單個

list left = merge_sort(list.sublist(0,num));

list right = merge_sort(list.sublist(num,list.size()));

// 合併並排序

returnmerge_sort(left, right);

}/**

合併操作,將兩個有序陣列

left

和right

合併成乙個大的有序陣列*/

staticlistmerge_sort(listleft, list right)else}//

將兩個集合中的未新增的元素全部新增到結果集當中

result.addall(left.sublist(l,left.size()));

result.addall(right.sublist(r,right.size()));

returnresult;

六種qsort排序方法

本文中排序都是採用的從小到大排序 一 對int型別陣列排序 int num 100 sample int cmp const void a const void b qsort num,100,sizeof num 0 cmp 二 對char型別陣列排序 同int型別 char word 100 s...

演算法的六種排序

一 選擇排序法 簡單選擇排序是最簡單直觀的一種演算法,基本思想為每一趟從待排序的資料元素中選擇最小 或最大 的乙個元素作為首元素,直到所有元素排完為止,簡單選擇排序是不穩定排序。for int i 0 i arr.length 1 i 簡單選擇排序通過上面優化之後,無論陣列原始排列如何,比較次數是不...

六種基本排序方式

package new03 public class demo4 sop 原序列的結果是 for int x nums sop n selectsort nums insertsort nums bubblesort nums quicksort nums shellsort nums heapso...