排序演算法 java

2021-09-10 17:56:49 字數 2467 閱讀 1956

/**

* 氣泡排序

* 原理:從前往後,依次比較相鄰兩個數大小,如果arr[i]大於arr[i+1],則交換他們的位置

* 即將比較大的數往後放,小的數往前走

*/private static void bubblesort(int arr)

}// 沒有發生交換(表示已經是有序的了)則退出迴圈;

if (flag) }}

/**

* 插入排序

* 原理:在保證arr[i]前面的元素都是有序的前提下,將temp = arr[i]依次與前面的元素比較大小

* 如果arr[i-1]大於temp則將arr[i-1]後移一位,直到arr[i-n]不大於temp為止

* 然後將temp插入到(i-n+1)這個為止

*/private static void insertsort(int arr)

// 將temp插入當前空位置

arr[j] = temp;}}

注:此**還可以優化

/**

* 二分插入排序

* 原理:在保證arr[i]前面的元素都是有序的前提下

* 利用二分法找到arr[i]前面陣列中第乙個大於temp(待插入元素)的元素的索引位置index

* 然後將所有大於temp的元素全部後移一位

* 將temp插入index位置

*/private static void binaryinsertsort(int arr)

if (arr[m] <= temp)

if (arr[m] > temp)

}// 二分法查詢第乙個大於當前元素的值 end

// 將滿足條件的從index到i-1位置的元素全部後移一位

for (j = i - 1; j >= index; j--)

// 將目標元素的值插入index位置

arr[index] = temp;}}

// 附:二分法查詢第乙個大於目標值得索引位置

public static int searchfirstlargethanthisvalue(int arr, int value)

if (arr[m] <= value)

if (arr[m] > value)

}return m;

}

/**

* 快速排序

* 原理:利用三數取中法,選擇乙個合適的數作為基數,將基數放到陣列最左邊(位置l)

* 先從後往前查詢,找到比基數小的數(位置j)停止

* 再從前往後查詢,找到比基數大的數(位置i)停止,如果i=j時還沒找到則停止

* 直到 i = j 時,交換arr[i]和基數的位置,此時完成一次比較,保證基數左邊的數都比基數小,右邊的數都比基數大;

* 然後分別遞迴基數左邊陣列和右邊陣列

*/private static void quicksort(int arr, int l, int r)

// 臨時變數

int temp;

// 三數取中法,取乙個合適的數(中間值)作為排序的基數,將基數放到陣列最左邊

// 比較 l,r,m 三個位置元素的大小,將最大的數放到最右邊,將最小的數放到中間,將中間的數放到最左邊

int m = (l + r)/2;

if (arr[l] > arr[r])

if (arr[m] > arr[r])

if (arr[l] < arr[m])

// 選取陣列第乙個元素作為基數

int base = arr[l];

int i = l;

int j = r;

while (i < j)

// 再從前往後查詢,找到第乙個比基數大的數停止,如果i=j時還沒找到則停止

while (i < j && arr[i] <= base)

// 如果此時 i

/*** 歸併排序

* 原理:

* 首先建立乙個與待排序陣列大小相等的臨時陣列 temp ,用來存放合併後的序列;

* 採用分治法

*/private static void mergesort(int arr, int l, int r, int temp)

}private static void merge(int arr, int l, int mid, int r, int temp) else

}while (i <= mid)

while (j <= r)

t = 0;

//將temp中的元素全部拷貝到原陣列中

while (l <= r)

}

參考:

資料結構與演算法

java排序演算法

1.定義 通過比較來確定輸入序列1,a 2,a n 的元素間相對次序的排序演算法稱為比較排序演算法。2.演算法解釋 1 選擇排序 選擇排序的基本思想是對待排序的記錄序列進行n 1遍的處理,第i遍處理是將l i.n 中最小者與l i 交換位置。這樣,經過i遍處理之後,前i個記錄的位置已經是正確的了。2...

Java排序演算法

回顧一下排序演算法 稍微地設計一下基礎類 插入排序 插入排序 insertion sort 的基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。氣泡排序 氣泡排序 bubblesort 的基本概念是 依次比較相鄰的兩個數,將小數放在...

java 排序演算法

氣泡排序 public void bubblesort int array 選擇排序 選擇排序 public void selectsort int a else 判斷 j 1 或者 就是第乙個小於等於temp資料的位置 datas j 1 temp 快速排序 快速排序 param datas pu...