基本思想:假设数组[7,5,6,3,2,4,1]需要按升序排列,将第1个数与第2个数比较,7>5那么两个数交换位置数组变为[5,7,6,3,2,4,1],再将第三个数与第2个数和第一个数比较,若小于前面的数则交换位置,以此类推…
package com.example.demo.other;
public class ArthTest {
public static void main(String[] args) {
//生成指定范围的随机数
int[] arr = generateIntArray(10, 10);
//打印原始数据
printArray(arr);
//插入排序
insertSort(arr);
//打印排序后的数据
printArray(arr);
}
private static void insertSort(int[] arr) {
long start = System.currentTimeMillis();
//从第2个数开始
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-1];
arr[j-1]=arr[j];
arr[j]=temp;
}
}
}
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - start));
}
private static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ",");
}
System.out.println();
}
public static int[] generateIntArray(int number, int rangeRight) {
int[] arr = new int[number];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * rangeRight) ;
}
return arr;
}
}