Java實現氣泡排序和選擇排序

2021-09-09 06:23:47 字數 1719 閱讀 3877

氣泡排序:依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從a到z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。

冒牌排序是穩定排序法。

**如下:

/**

* 氣泡排序

* 依次比較相鄰的兩個元素,如果前邊的元素大於後邊的元素則交換

* 這樣每次先排好的是最後一位

* 3 1 6 8 0

* 1 3 6 0 8 第0次比較:4次 從第一位開始到最後一位,排好了最後一位

* 1 3 0 6 8 第1次比較:3次 從第一位開始到倒數第二位,排好了倒數第二位

* 1 0 3 6 8 第2次比較:2次 ...

* 0 1 3 6 8 第3次比較:1次 ...

* 共比較4次

* 完成!

*/@test

public void testbubblesort();

// 定義乙個flag,用來記錄上一輪是否有元素進行交換,

// 如果上一輪沒有元素進行交換,說明已經排序完成,停止排序(優化)

boolean flag;

for (int i = 0; i < arr.length - 1; i++)

}// 如果flag為true,則說明排序已經完成,結束迴圈

if (flag)

}system.out.println(arrays.tostring(arr));//[0, 1, 3, 6, 8]

}

選擇排序:每一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾,直至有序。

選擇排序是不穩定排序法。

**如下:

/**

* 選擇排序 : 拿每次迴圈的第乙個元素i依次與後邊的每個元素j比較,

* 如果i > j,則交換兩元素的位置,每輪迴圈結束後會將較小的數往前排,

* 下次迴圈從本次的元素的後邊乙個元素開始

* 3 1 8 6 0

* 0 1 3 8 6 第0次比較:4次 從第一位開始到最後一位,排好了第一位

* 0 1 3 8 6 第1次比較:3次 從第二位開始到最後一位,排好了第二位

* 0 1 3 8 6 第2次比較:2次 ...

* 0 1 3 8 6 第3次比較:1次 ...

*/@test

public void testselectionsort();

for (int i = 0; i < arr.length - 1; i++) }}

system.out.println(arrays.tostring(arr));//[0, 1, 3, 6, 8]

}

排序演算法穩定性:

排序前後相同的元素前後的位置不會改變的成為穩定排序演算法,否則則是不穩定排序演算法。

如:陣列中存在元素 arr[i] = arr[j] ,且 arr[i] 在 arr[j] 的前面,若使用演算法排序後 arr[i] 和 arr[j] 的前後順序不會發生改變,則說明該排序演算法穩定,否則為不穩定排序演算法。

Java實現氣泡排序和快速排序,選擇

冒泡 public class sort sort values for int i 0 i values.length i public static void sort int values 快速排序 public class quicksort int tmp a i a i a j a j ...

用java實現氣泡排序和選擇排序

氣泡排序 依次比較兩個相鄰的元素,將值大的元素交換至右端,一輪比較過後,最大的元素在最右端。public class bubblesort 隨意定義個陣列,測試 bubblesort arr public static void bubblesort int arr 遍歷陣列 for int i 0...

Java 氣泡排序和選擇排序

b 氣泡排序 b 氣泡排序比較好理解,但是效率比較低,氣泡排序的基本思想是 每一次將最具有特徵的乙個數 或者object 放到序列的最前面,或者最後面。例如,如果需要將一組數,以從小到大的順序排列,那麼就可以設計這樣的冒泡方法 可以設計從序列的最後面開始,找出序列中最小的乙個數放到序列的最前面,這樣...