冒泡排序
冒泡排序直接是两个嵌套的for循环,里面一层for循环控制把该轮次最大的数冒泡到最后面,外面一层for循环控制冒泡的轮次。
public class Demo1_array {
public static void main(String[] args) {
int[] arr = { 24, 65, 32, 98, 15, 30, 65, 42, 20 }; // 9
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
bubbleSort(arr);
System.out.println();
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j]+" ");
}
}
public static void bubbleSort(int[] arr) {
int temp = 0;
for (int i = 1; i < arr.length; i++) {
for (int j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
运行结果
选择排序
直接选择排序同样是两个嵌套的for循环,每一轮将第一个索引位置的值依次与后面的比较若比后面位置的大则交换位置。里面一层循环控制第一个索引的值依次与后面比较并判断是否交换位置,保证每轮比较将最小的值交换到最前面。外面一层循环控制比较的轮次没比较一轮索引位置前移动一位。
public class sort {
public static void main(String[] args) {
int[] arr = { 24, 65, 32, 98, 15, 30, 68, 42, 20 }; // 9
print(arr);
selectSort(arr);
System.out.println();
print(arr);
}
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;
}
}
}
}
运行结果
二分查找
二分查找前提是数组必须是有序的。首先将数组中位的值与要查找的进行比较,若比要查找的值大则说明要查找的值在左半边,反之,则要查找的值在右半边。接下来对相应的半边进行二分查找。
public class sort {
public static void main(String[] args) {
int[] arr = { 24, 65, 32, 98, 15, 30, 68, 42, 20 }; // 9
print(arr);
selectSort(arr);
System.out.println();
print(arr);
System.out.println();
System.out.println(getIndex(arr,42)); //查找42的位置
}
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;
}
}
}
}
public static int getIndex(int[] arr, int value) {
int min = 0;
int max = arr.length - 1;
int mid = (min + max) / 2;
while (arr[mid] != value) {
mid = (min + max) / 2;
if (arr[mid] < value)
min = mid + 1;
else if (arr[mid] > value)
max = mid - 1;
if (min > max)
return -1;
}
return mid;
}
public static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
运行截图