Java實現七大排序

2021-09-25 02:12:48 字數 2741 閱讀 2221

來自

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 氣泡排序 ...