Java中常見的排序

2021-08-17 10:00:42 字數 2624 閱讀 9629

/**  

* 冒泡法排序

* 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

* 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

* 針對所有的元素重複以上的步驟,除了最後乙個。

* 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

*

* @param numbers

* 需要排序的整型陣列

*/

public static void bubblesort(int numbers)

}

}

}

/**  

* 快速排序

*

*

* @param numbers

* @param start

* @param end

*/

public static void quicksort(int numbers, int start, int end)

} while (i <= j);

if (start < j)

quicksort(numbers, start, j);

if (end > i)

quicksort(numbers, i, end);

}

}

/**  

* 選擇排序

* 在未排序序列中找到最小元素,存放到排序序列的起始位置

* 再從剩餘未排序元素中繼續尋找最小元素,然後放到排序序列末尾。

* 以此類推,直到所有元素均排序完畢。

*

* @param numbers

*/

public static void selectsort(int numbers)

temp = numbers[i];

numbers[i] = numbers[k];

numbers[k] = temp;

}

}

/**  

* 歸併排序

*

*

* @param numbers

*/

public static void mergesort(int numbers, int left, int right)

if (i + (s - 1) < right)

merge(numbers, i, i + (s - 1), right);

}

}

/**

* 歸併演算法實現

*

* @param data

* @param p

* @param q

* @param r

*/

private static void merge(int data, int p, int q, int r) else

k++;

}

if (s == q + 1)

b[k++] = data[t++];

else

b[k++] = data[s++];

for (int i = p; i <= r; i++)

data[i] = b[i];

}

各演算法的複雜度:

氣泡排序:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的)。第二趟結束,在倒數第二的位置上得到乙個新的最大數(其實在整個數列中是第二大的數)。如此下去,重複以上過程,直至最終完成排序。由於在排序過程中總是小數往前放,大數往後放,相當於氣泡往上公升,所以稱作氣泡排序。

快速排序:快速排序是對氣泡排序的一種改進。選擇乙個基準元素,通常選擇第乙個元素或者最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,然後再用同樣的方法遞迴地排序劃分的兩部分。

選擇排序:每一趟從待排序的資料元素中選出最小的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。

歸併排序:歸併排序是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。

Java陣列中常見的排序演算法

今天在陣列中用到了排序演算法,經過查詢資料之後,在這總結三種常見的排序演算法。氣泡排序法 public void fun1 n個數要比較的輪數為n 1 for int i 0 i array.length 1 i for int i 0 i array.length i 選擇排序法 public v...

java中常見異常

runtimeexception 1.arithmeticexception 數學計算異常 2.nullpointerexception 空指標異常 3.negativearraysizeexception 負陣列長度異常 4.arrayindexoutofbound ception 陣列索引越界異...

java中常見演算法2

二分查詢原理 param arr 乙個陣列 param a 要查詢的整數 return 返回查詢到的陣列下標,沒找到則返回 1 public int find int arr,int a else if a middle else return 1 利用遞迴實現二分查詢 param arr 乙個陣列...