排序
冒泡
public static void main(String[] args) {
int[] arr = { 45, 1, 41, 21, 8, 13, 6, 12 };
for (int i = 1; i < arr.length; i++) {
for (int j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = tmp;
}
}
}
System.out.println(Arrays.toString(arr));
}
快排
public static void main(String[] args) {
int[] arr = { 45, 1, 41, 21, 8, 13, 6, 12 };
sort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
public static void sort(int[] arr, int begin, int end) {
int piv = arr[begin];
int min = begin;
int max = end;
while (begin < end) {
while (begin < end && arr[end] >= piv) {
end--;
}
arr[begin] = arr[end];
while (begin < end && arr[begin] <= piv) {
begin++;
}
arr[end] = arr[begin];
}
arr[begin] = piv;
if (min < begin - 1) {
sort(arr, min, begin - 1);
}
if (max > end + 1) {
sort(arr, end + 1, max);
}
}
查找
二分查找
public static void main(String[] args) {
int[] arr = { 1, 6, 8, 12, 13, 21, 41, 45 };
int targe = 21;
int begin = 0;
int end = arr.length - 1;
int pos = -1;
boolean flag = false;
while (begin <= end) {
pos = (begin + end) / 2;
if (arr[pos] > targe) {
end = pos - 1;
} else if (arr[pos] < targe) {
begin = pos + 1;
} else {
flag = true;
break;
}
}
if (flag)
System.out.println(pos);
else
System.out.println("没找到");
}