Java實(shí)現(xiàn)冒泡排序算法及對(duì)其的簡單優(yōu)化示例
冒泡排序是一種簡單但效率較低的排序算法,它通過多次比較和交換相鄰元素的方式將最大(或最小)的元素逐漸“冒泡”到數(shù)組的一端。雖然冒泡排序的時(shí)間復(fù)雜度較高,但它易于理解和實(shí)現(xiàn),適用于小規(guī)模的數(shù)據(jù)排序。
下面是Java實(shí)現(xiàn)冒泡排序算法的示例代碼:
public class BubbleSort {
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交換相鄰元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
以上代碼中,bubbleSort方法接受一個(gè)整型數(shù)組作為參數(shù),并對(duì)其進(jìn)行冒泡排序。外層循環(huán)控制比較的輪數(shù),內(nèi)層循環(huán)用于比較相鄰元素并進(jìn)行交換。
接下來,我們來看一下對(duì)冒泡排序算法的簡單優(yōu)化。
冒泡排序的優(yōu)化思路主要是通過增加一個(gè)標(biāo)志位來判斷是否發(fā)生了交換,如果某一輪比較中沒有發(fā)生交換,說明數(shù)組已經(jīng)有序,可以提前結(jié)束排序。
以下是對(duì)冒泡排序算法進(jìn)行簡單優(yōu)化的示例代碼:
public class BubbleSort {
public static void bubbleSort(int[] arr) {
int n = arr.length;
boolean swapped;
for (int i = 0; i < n - 1; i++) {
swapped = false;
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交換相鄰元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
// 如果某一輪比較中沒有發(fā)生交換,提前結(jié)束排序
if (!swapped) {
break;
}
}
}
在優(yōu)化后的代碼中,我們?cè)黾恿艘粋€(gè)布爾型變量swapped來標(biāo)記是否發(fā)生了交換。如果某一輪比較中沒有發(fā)生交換,即swapped為false,則說明數(shù)組已經(jīng)有序,可以提前結(jié)束排序。
以上就是Java實(shí)現(xiàn)冒泡排序算法及對(duì)其的簡單優(yōu)化示例的內(nèi)容。希望能對(duì)你有所幫助!