氣泡排序
//氣泡排序
public static void sort(int arr)
for(int i=0;iarr[j+1])}}
}
快速排序
//基於荷蘭國旗的快速排序
public static void quicksort(int arr,int start,int end)
if(start>=end)
int left=start;
int less=start-1;
int more=end+1;
int index= (int) (math.random()*(end-start+1)+start);
int temp=arr[index];
while (lefttemp)else
}quicksort(arr,start,less);
quicksort(arr,more,end);
}//交換陣列中兩個元素
private static void swap(int arr, int left, int right)
直接插入排序
//插入排序
public static void sort(int arr)
//從第二個元素開始逐個插入
for(int i=1;i=0&&arr[j]>temp;j--)
//將哨兵放置
arr[j+1]=temp;}}
}
希爾排序
//希爾排序
public static void shellsort(int arr)
int k = 1;
// 遍歷所有的步長
for (int d = arr.length / 2; d > 0; d /= 2) }}
system.out.println("第" + k + "次排序結果:" + arrays.tostring(arr));
k++;}}
簡單選擇排序
//選擇排序
public static void sort(int arr)
for(int i=0;i堆排序
//堆排序
public static void heapsort(int arr)
int size=arr.length;
heapify(arr,size);
while(size>0)
}//調整大根堆
public static void heapify(int arr,int size)
int i=size/2-1;
while(i>=0)
//結束條件
if(low基數排序
//基數排序
private static void radixsort(int arr)
//取出最大值
int max=0;
for(int i=0;imax)
}//獲取迴圈次數
int len=(max+"").length();
//迴圈按各位數字排序
int n=1;//輔助變數計算數字
int temp=new int[10][arr.length];//儲存數字的陣列
int counts=new int[10];//儲存各陣列儲存資料個數
for(int j=0;j
//將分組結果賦值給原陣列,繼續下一輪
int loa=0;
for(int p=0;p<10;p++)
counts[p]=0;//恢復0,以免影響下一輪
}n*=10;}}
資料結構八大排序
不穩定排序 一 選擇排序 例如 4 1 8 21 0 i j 0 4 8 21 1 將i的值存放到minindex中 arr j tmp 比較minindex和tmp的值 最後互換 void select sort int arr,int len 三 直接插入排序 穩定的演算法 無序 o n 2 有...
資料結構八大排序演算法
常見的八大排序演算法,他們之間關係如下 直接插入排序 definsert sort l 遍歷陣列中的所有元素,其中0號索引元素預設已排序,因此從1開始 for x in range 1 len l 將該元素與已排序好的前序陣列依次比較,如果該元素小,則交換 range x 1,1,1 從x 1倒序迴...
Java 八大排序之 希爾排序
又叫縮小增量排序。將待排序列,分割成若干子串行進行直接插入排序 序列基本有序時,對全體進行直接插入排序 選擇增量序列,t1 t2,tk 序列依次遞減,tk 1按增量序列個數k,進行k次排序 根據增量ti 對子序列進行直接插入排序。當增量為1時,整個序列作為乙個表處理,得到排序後的陣列 public ...