來自
import com.sun.scenario.effect.merge;
public class sort
// 1. 氣泡排序
// 時間複雜度為 n^2
// 空間複雜度o(1)
// 穩定排序
public static void bubblesort(int arr, int len)
}if (flag)
continue;}}
/*** 2. 插入排序:將資料插入前面已經排好序的佇列中
* 平均時間複雜度為 n^2
* 空間複雜度o(1)
* 穩定排序
** @param arr
* @param length
*/public static void insertsort(int arr, int length)
arr[j] = tmp;}}
/*** 3. 選擇排序:
* 每一趟從待排序的資料元素中選擇最小(或最大)的乙個元素作為首元素,
* 直到所有元素排完為止。
*/public static void selectsort(int arr, int len)
}if (min != i)// 若min發生改變,進行交換
swap(arr, i, min);}}
/*** 4. 希爾排序:改進版的插入排序
* 步長由長到短分組,進行排序,直到步長為1為止
** @param arr
* @param len
*/public static void shellsort(int arr, int len)
arr[j] = tmp;}}
}/**
* 5.歸併排序: 拆分 合併
* 時間複雜度: o(nlogn)
* 空間複雜度: 對於陣列來說, o(n)
* 穩定性: 穩定排序
** @param arr
* @param low
* @param high 陣列最後乙個的下標
*/public static void mergesort(int arr, int low, int high)
}/**
* <2> 合併
** @param arr 陣列
* @param low 低下標
* @param mid 中間位置數值下標
* @param high 高下標
*/public static void merge(int arr, int low, int mid, int high)
// 2>若;兩個陣列個數不同,比較完1>後,個數少的陣列會有餘留
while (i <= mid)
pro[index++] = arr[i++];
while (j <= high)
pro[index++] = arr[j++];
// 3>將排序好的輔助陣列中的值放入原陣列
for (int k = 0; k < index; k++)
arr[k + low] = pro[k];
}// 6. 堆排序:先建大堆,然後迴圈刪除堆頂元素
public static void heapsort(int arr, int size)
}// 堆刪
if (size <= 1)
return;
swap(arr, 0, size - 1);
adjustdown(arr, size - 1, 0);
}// 建立最大堆
private static void createheap(int arr, int size)
}// 向下調整
private static void adjustdown(int arr, int size, int i)
}// 7. 快速排序
/*** 時間複雜度: 最壞 o(n ^ 2)(如果陣列是逆序的) 平均水平 o(nlogn)
* 不穩定排序
* @param arr
* @param start
* @param end
*/public static void quicksort(int arr, int start, int end)
// 此時left==right
if (left - 1 > start) quicksort(arr, start, left - 1);
if (right + 1 < end) quicksort(arr, right + 1, end);
}public static void main(string args) ;
int arr = ;
int len = arr.length;
// insertsort(arr, len);
// bubblesort(arr, len);
// mergesort(arr, 0, len - 1);
// shellsort(arr, len);
// selectsort(arr, len);
// heapsort(arr, len);
quicksort(arr, 0, len - 1);
for (int a : arr) }}
java實現七大排序
package com.tx public class sort 選擇排序演算法 簡單選擇排序的基本思想 第1趟,在待排序記錄data 1 data n 中選出最小的記錄,將它與data 1 交換 第2趟,在待排序記錄data 2 r n 中選出最小的記錄,將它與data 2 交換 以此類推,第i趟...
七大排序演算法
氣泡排序 void bubble int a,int n 選擇排序 void select sort int a,int n n為陣列a的元素個數 將第i 小的數,放在第i 個位置 如果剛好,就不用交換 if i min index 插入排序 typedef int elementtype void...
七大排序演算法
七大排序分類 插入排序 直接插入排序 穩定 希爾排序 不穩定 選擇排序 簡單選擇排序 穩定 堆排序 不穩定 交換排序 氣泡排序 穩定 快速排序 不穩定 歸併排序。直接插入排序 時間複雜度 o n 2 演算法穩定性 穩定void straightinsertsort int a,int n 氣泡排序 ...