冒泡
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...