插入排序:
算法描述:以原数组的第一个数据作为一个新的数组,然后将原数组第一个数据以后的数据插入到新的数组中去;要明白:之前所说的那个新数组是虚拟的,计算机底层不会创建一个新数组,还是在原数组上进行的操作。首先定义一个指针 i 从索引为1开始从前往后移动遍历原数组,注意是索引为1也就是第二个数据,接着再定义一个指针 j ,指针 j = i+1 开始,从后往前移动,将 i 的值插入到新数组中
时间复杂度是O(nlogn)
代码实现
package com.test;
import java.util.Arrays;
public class charu {
private static void main(int[] arr) {
for (int i = 1; i < arr.length; i++) {
for (int j = i - 1; j >= 0; j--) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
private static void xz(int[] arr) {
for (int j = 0; j < arr.length - 1; j++) {
int min = arr[j];
int minindex = j;
for (int i = j + 1; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
minindex = i;
}
}
arr[minindex] = arr[j];
arr[j] = min;
}
System.out.println(Arrays.toString(arr));
}
}