数组声明 (有php有些差距,故需要熟悉)
※数组的初始化,长度是固定的
public static void main(String[] args) {
// 静态初始化
int[] ids = new int[]{1001, 1002,1003};
// 动态初始化
String[] names = new String[3];
names[0] = "凌某";
names[1] = "乔某";
names[2] = "季某";
}
排序
排序方法 | 时间复杂度(平均) | 时间复杂度(最坏 ) | 时间复杂度(最好) |
---|---|---|---|
冒泡 | O(n²) | O(n²) | O(n) |
快速 | O( nlogn) | O(n²) | O(nlogn) |
public static void main(String[] args) {
int[] arr1 = new int[]{43, 32, -8, 27, 97, 32, 8, 27};
/*
冒泡排序
*/
for (int i = 0; i < arr1.length - 1; i++) {
for (int j = 0; j < arr1.length - 1 - i; j++) {
if (arr1[j] > arr1[j + 1]) {
int tmp = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = tmp;
}
}
}
// [-8, 8, 27, 27, 32, 32, 43, 97]
System.out.println(Arrays.toString(arr1));
int[] arr2 = new int[]{43, 32, -8, 27, 97, 32, 8, 27};
/*
快速排序
*/
quickSort(arr2, 0, arr2.length-1);
// [-8, 8, 27, 27, 32, 32, 43, 97]
System.out.println(Arrays.toString(arr2));
}
/**
* 快速排序
* @param arr 排序数组
* @param low 左侧索引
* @param high 右侧索引
*/
public static void quickSort(int[] arr, int low, int high) {
if (low > high) {
return;
}
int l, h, temp, t;
l = low;
h = high;
// 取此数值作为标准
temp = arr[low];
while (l < h) {
//先看右边,依次往左递减
while (temp <= arr[h] && l < h) {
h--;
}
//再看左边,依次往右递增
while (temp >= arr[l] && l < h) {
l++;
}
// 交换
if (l < h) {
t = arr[h];
arr[h] = arr[l];
arr[l] = t;
}
}
// 然后交换
arr[low] = arr[l];
arr[l] = temp;
// 最后递归执行
quickSort(arr, low, h - 1);
quickSort(arr, h + 1, high);
}
Arrays工具类