1、假设前n个已经有序,每次循环都是将无序表中的一个元素插入到有序表中去。
package Sort;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
public class InsertSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
// int[] arr = {9,3,5,8,2,-1,-3};
int[] arr = new int[80000];
for(int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random()*800000);
}
Date date1 = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String data1sString = simpleDateFormat.format(date1);
System.out.println("前:"+data1sString);
InsertSort insertSort = new InsertSort();
insertSort.insertSort(arr);
Date date2 = new Date();
String data2sString = simpleDateFormat.format(date2);
System.out.println("后:"+data2sString);
// System.out.println(Arrays.toString(arr));
}
//插入排序(升序)
public void insertSort(int[] arr){
if(arr.length == 0) {
return;
}
for(int i = 1 ; i < arr.length ; i++) {
int temp = arr[i];//无序表中的第一个元素(待插入的元素)
int j = i-1;//有序表中第一个元素
while(j >= 0 && temp < arr[j]) {
arr[j+1] = arr[j];
j--;
}
if(j+1 != i) {
arr[j+1] = temp;
}
}
}
}