二分法
二分法排序:查询一个元素在其他经过排序的数字数组中的索引
package com.test.two;
import java.util.Arrays;
public class 二分法 {
public static void main(String[] args) {
int[] arr = { 11, 22, 9, 33, 4, 25, 27, 15 };
Arrays.sort(arr);
int[] arr1 = arr;
int num = 22;
System.out.println(Arrays.toString(arr1));
System.out.println(meth(arr1, num));
}
private static int meth(int[] arr, int num) {
int start = 0;
int end = arr.length - 1;
while (start <= end) {
int mid = (start + end) / 2;
if (arr[mid] > num) {
end = mid - 1;
} else if (arr[mid] < num) {
start = mid + 1;
} else {
return mid;
}
}
return -1;
}
}
排序算法(插叙排序,冒泡排序,直接排序,直接选择排序)
插入法排序:外循环从0 开始到 数组长度,内循环从外循环元素 到0
package com.test.two;
import java.util.Arrays;
public class 插入排序 {
public static void main(String[] args) {
int[] arr = {22,15,43,6,37,9};
for (int i = 1; i < arr.length; i++) {
for (int j = i; j > 0; j--) {
if (arr[j]<arr[j-1]) {
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
冒泡法排序:外循环从0开始到 数组长度-1,内循环 从0开始到 数组长度-1-外循环元素
package com.test.two;
import java.util.Arrays;
public class 冒泡排序 {
public static void main(String[] args) {
int[] arr = {22,15,43,6,37,9};
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1-i; j++) {
if (arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
直接排序:外循环从0开始到 数组长度-1,内循环从 外循环元素+1 到 数组长度
package com.test.two;
import java.util.Arrays;
public class 直接排序 {
public static void main(String[] args) {
int[] arr = {22,15,43,6,37,9};
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;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
直接选择排序:外循环从0 到数组长度 内循环,从 外循环元素+1 到数组长度(提取索引)
package com.test.two;
import java.util.Arrays;
public class 直接选择排序 {
public static void main(String[] args) {
int[] arr = {22,15,43,6,37,9};
for (int i = 0; i < arr.length; i++) {
int temp = i;
for (int j = i+1; j < arr.length; j++) {
if (arr[j]<arr[temp]) {
temp = j;
}
}
int temps = arr[i];
arr[i] = arr[temp];
arr[temp] = temps;
}
System.out.println(Arrays.toString(arr));
}
}