Java版資料結構之八大排序演算法

2021-08-30 21:39:55 字數 1991 閱讀 5478

氣泡排序

//氣泡排序

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