java记录 - 插入排序

插入排序

import java.text.SimpleDateFormat; 
import java.util.Arrays;
import java.util.Date;

public class InsertSort {
	public static void main(String[] args) {
		
		// 创建要给 80000 个的随机的数组
		int[] arr = new int[200000];
		for (int i = 0; i < 200000; i++) {
			arr[i] = (int) (Math.random() * 20000000); // 生成一个[0, 8000000) 数
		}

		System.out.println("排序前"); 
		Date data1 = new Date();
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
		String date1Str = simpleDateFormat.format(data1);
		System.out.println("排序前的时间是=" + date1Str);

		insertSort(arr); //20w数据5秒

		Date data2 = new Date();MERCURY_7336
		String date2Str = simpleDateFormat.format(data2); 
		System.out.println("排序后的时间是=" + date2Str);

	}

	//插入排序
	public static void insertSort(int[] arr) { 
		int insertVal = 0;
		int insertIndex = 0;

		//使用 for 循环来把代码简化
		for(int i = 1; i < arr.length; i++) {
				
			//定义待插入的数
			insertVal = arr[i];
			insertIndex = i - 1; 

			while (insertIndex >= 0 && insertVal < arr[insertIndex]) { 
				arr[insertIndex + 1] = arr[insertIndex];
				// arr[insertIndex] 
				insertIndex--;
			}

			if(insertIndex + 1 != i) {
				arr[insertIndex + 1] = insertVal;

			}
		}
	}

}

猜你喜欢

转载自blog.csdn.net/bell_love/article/details/106319609