1、插入排序
import java.util.Arrays;
public class 插入排序 {
public static void main(String[] args) {
int[] arr = {9,3,7,2,5,8,1,4};
insertSort2(arr);
System.out.println(Arrays.toString(arr));
}
public static void insertSort2(int[] arr) {
for (int i = 1; i < arr.length ; i++) {
int insertValue = arr[i];
int index = i - 1;
while (index >= 0) {
if(arr[index] > insertValue) {
arr[index+1] = arr[index];
} else {
break;
}
index--;
}
arr[index+1] = insertValue;
}
}
public static void insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
for (int j = 0; j < i; j++) {
if (arr[j] > arr[i]) {
swap(arr, j, i);
}
}
}
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
2、 希尔排序
import java.util.Arrays;
public class 希尔排序 {
public static void main(String[] args) {
int[] arr = {18,23,19,9,24,15};
shellSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void shellSort(int[] arr) {
int gap = arr.length/2;
while (gap>0) {
for(int i = 0; i<arr.length-gap; i++) {
int insertValue = arr[i + gap];
int index = i;
while(index>=0) {
if(insertValue < arr[index]) {
arr[index+gap] = arr[index];
} else {
break;
}
index -=gap;
}
arr[index+gap] = insertValue;
}
gap/=2;
}
}
public static void shellSort2(int[] arr) {
int length = arr.length;
int temp;
for (int step = length / 2; step >= 1; step /= 2) {
for (int i = step; i < length; i++) {
temp = arr[i];
int j = i - step;
while (j >= 0 && arr[j] > temp) {
arr[j + step] = arr[j];
j -= step;
}
arr[j + step] = temp;
}
}
}
}