Collection接口有List和Set兩個子接口。算法
int[] arr = {6, 4, 9, 1, 5, 3};
for(int i = 0; i < arr.length - 1; i++) {
int k = i;
for(int j = k + 1; j < arr.length; j++) { // 選最小的值
if(arr[j] < arr[k]) {
k = j; // 記下目前找到的最小值所在的位置
}
}
// 找到本輪循環的最小的數之後,再進行交換
if(i != k) { // 交換a[i]和a[k]
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
複製代碼
int[] arr = {6, 4, 9, 1, 5, 3};
int temp;
for(int i = 0; i < arr.length - 1; i++) { // 外層循環控制排序趟數
for(int j = 0; j < arr.length - i - 1; j++) { // 內層循環控制每一趟排序多少次,每一次循環把大數滾到隊列末尾
if(arr[j + 1] < arr[j]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
複製代碼
public static int[] quickStore(int[] array, int l, int r) {
if (l < r) {
int i = l;
int j = r;
int x = array[l];
while (i < j) {
while (i < j && array[j] >= x) {
// 從右向左找第一個小於x的數
j--;
}
if (i < j) {
array[i++] = array[j];
}
while (i < j && array[i] < x) { // 從左向右找第一個大於等於x的數
i++;
}
if (i < j) {
array[j--] = array[i];
}
}
array[i] = x;
quickStore(array, l, i - 1);
quickStore(array, i + 1, r);
}
return array;
}
複製代碼
// 二分查找遞歸實現
public static int binSearch(int array[], int start, int end, int key) {
int mid = (end - start) / 2 + start;
if (array[mid] == key) {
return mid;
}
if (start >= end) {
return -1;
} else if (key > array[mid]) {
return binSearch(array, mid + 1, end, key);
} else if (key < array[mid]) {
return binSearch(array, start, mid - 1, key);
}
return -1;
}
// 二分查找普通循環實現
public static int binSearch(int array[], int key) {
int mid = array.length / 2;
if (key == array[mid]) {
return mid;
}
int start = 0;
int end = array.length - 1;
while (start <= end) {
mid = (end - start) / 2 + start;
if (key < array[mid]) {
end = mid - 1;
} else if (key > array[mid]) {
start = mid + 1;
} else {
return mid;
}
}
return -1;
}
複製代碼