陣列的基本演算法

不比真如一相会發表於2024-03-21

6.1氣泡排序

private static void bubbleSort(int[] arr) {
// 外迴圈: 控制比較的輪數
for (int i = 0; i < arr.length - 1; i++) {
// 內迴圈: 控制比較的次數
// -1避免索引越界, -i提高效率
for (int j = 0; j < arr.length - 1 - i; j++) {
// j = 0 1
// j = 1 2
// j = 2 3
// j = 3 4
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}

6.2選擇排序

public static void selectSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}

6.3基本查詢

陣列遍歷

6.4二分查詢(折半查詢)

public static int binarySearch(int num, int[] arr) {
int min = 0;
int max = arr.length - 1;

while (min <= max) {
// 計算中間索引
int mid = (min + max) / 2;
// 比對
if (num > arr[mid]) {
min = mid + 1;
} else if (num < arr[mid]) {
max = mid - 1;
} else {
return mid;
}
}

return -1;
}

相關文章