You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
239 lines
6.0 KiB
239 lines
6.0 KiB
package leo.class01_01;
|
|
|
|
import leo.util.ArrayUtil;
|
|
|
|
import java.util.Arrays;
|
|
/**
|
|
* @author Leo
|
|
* @ClassName InsertionSort
|
|
* @DATE 2020/11/12 9:21 上午
|
|
* @Description
|
|
*/
|
|
public class InsertionSort {
|
|
|
|
|
|
/**
|
|
* 功能描述 : 插入排序
|
|
* @author Leo
|
|
* @date 2020/11/12 9:58 上午
|
|
* @param arr
|
|
* @throw
|
|
* @return void
|
|
*/
|
|
public static void insertionSort(int[] arr) {
|
|
if (arr == null || arr.length < 2) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void insertionSort1(int[] arr) {
|
|
if (arr == null || arr.length < 2) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >=0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public static void insertionSort2(int[] arr) {
|
|
if (arr.length < 2 || arr == null) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void insertionSort3(int[] arr) {
|
|
if (arr.length < 2 || arr == null) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void insertionSort4(int[] arr) {
|
|
if (arr.length < 2 || arr == null) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i-1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j+1);
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public static void insertionSort5(int[] arr){
|
|
if (arr == null || arr.length < 0) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public static void insertionSort6(int[] arr) {
|
|
if (arr == null || arr.length < 0) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public static void insertionSort7(int[] arr) {
|
|
if (arr == null || arr.length < 0) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public static void insertionSort8(int[] arr) {
|
|
if (arr.length < 0 || arr == null) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j +1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
public static void insertionSort9(int[] arr) {
|
|
if (arr == null || arr.length <= 0) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
public static void insertionSort10(int[] arr) {
|
|
if (arr.length == 0 || arr == null) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public static void insertionSort11(int[] arr) {
|
|
if (arr.length == 0 || arr == null) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void insertionSort12(int[] arr) {
|
|
if (arr.length == 0 || arr == null) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void insertionSort13(int[] arr) {
|
|
if (arr.length == 0 || arr == null) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void insertionSort14(int[] arr) {
|
|
if (arr.length == 0 || arr == null) {
|
|
return;
|
|
}
|
|
for (int i = 1; i < arr.length; i++) {
|
|
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
|
|
swap(arr, j, j + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void swap(int[] arr, int i, int j) {
|
|
if (arr == null
|
|
|| arr.length < 2
|
|
|| arr.length <= i
|
|
|| arr.length <= j) {
|
|
return;
|
|
}
|
|
|
|
arr[i] = arr[i] ^ arr[j];
|
|
arr[j] = arr[i] ^ arr[j];
|
|
arr[i] = arr[i] ^ arr[j];
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args){
|
|
int maxSize = 50;
|
|
int range = 80;
|
|
int testOfTime = 10000;
|
|
boolean succeed = true;
|
|
for (int i = 0; i < testOfTime; i++) {
|
|
int[] arr = ArrayUtil.randomArray(maxSize, range);
|
|
int[] anotherArr = ArrayUtil.copyArray(arr);
|
|
insertionSort14(arr);
|
|
Arrays.sort(anotherArr);
|
|
if (!ArrayUtil.isEqual(arr, anotherArr)) {
|
|
succeed = false;
|
|
ArrayUtil.printArr(arr, "arr");
|
|
ArrayUtil.printArr(anotherArr, "anotherArr");
|
|
break;
|
|
}
|
|
}
|
|
System.out.println(succeed ? "Nice!" : "Fucking fucked!");
|
|
|
|
|
|
}
|
|
|
|
}
|