冒泡,選擇,插入排序

package basic_01;

/*

* 冒泡算法:穩(wěn)定,時間:n^2,相鄰兩個數(shù)值進行比較。end邊界逐漸減小,先確定end外層循環(huán)的變化形式,再確定內層循環(huán)比較的變化形式,

* 簡單選擇排序算法:不穩(wěn)定,時間:n^2,相鄰兩個數(shù)值進行比較。左側邊界逐漸增大。

* 插入排序算法:穩(wěn)定,時間:n^2,每步將一個待排序的記錄,按其順序碼大小插入到前面已經(jīng)排序的字序列的合適位置,直到全部插入排序完為止。

*

*

* */

public class Code_00_Bubble_select_insert {

public static void main(String[] args) {

int[] arr = { 15, 27, 36, 59, 42, 8 };

bubbleSort(arr);

printarr(arr);

}

public static void bubbleSort(int[] arr) {

if (arr == null || arr.length < 2) {

return;

} // 刨除特殊情況

for (int end = arr.length - 1; end > 0; end--) {

for (int i = 0; i < end; i++) {

if (arr[i] > arr[i + 1]) {

swap(arr, i, i + 1);

}

}

} // 注意i的邊界條件,i應該截止到end的左側

}

public static void selectSort(int[] arr) {

if (arr == null || arr.length < 2) {

return;

} // 刨除特殊情況

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

int less = i;//定義一個變量用來存放最小值

for (int j = i + 1; j < arr.length; j++) {

less = arr[i] > arr[j] ? j : i;

}

swap(arr, less, i);

}

}//注意j的開始條件,應該是i右側的值

public static void insertSort(int[] arr) {

if (arr == null || arr.length < 2) {

return;

} // 刨除特殊情況

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

for (int j = i - 1; j >= 0; j--) {

if (arr[j] > arr[j + 1]) {

swap(arr, j, j + 1);

}

}

}

}// 內層循環(huán):類似與插牌,不斷的將第j個數(shù)據(jù)與前j個數(shù)據(jù)進行比較,排好序;不斷向前推進

public static void swap(int[] arr, int i, int j) {

int temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

public static void printarr(int[] arr) {

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

System.out.print(arr[i] + "\t");

}

}

}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容