插入排序Java代码实现

插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。

插入排序思路图
插入排序Java代码实现_第1张图片
具体代码如下:

**
 * @author 38636
 *
 */
public class InsertSort {
	public static void main(String[] args) {
		int arr [] = new int[80000];
		for(int i = 0 ;i<80000;i++) {
			Random random = new  Random();
			arr[i] = random.nextInt(80000);
		}
		Date currentDate = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		String date = sdf.format(currentDate);
		System.out.println("当前时间:"+date);
		
		
		
		insertSort(arr);
		Date sortAfterDate = new Date();
		String date2 = sdf.format(sortAfterDate);
		System.out.println("排序后时间:"+date2);
	}
	
	public static void insertSort(int[] arr) {
		
		if(arr==null || arr.length < 2) {
			return ;
		}
		int insertValue  = 0;
		int insertIndex = 0 ;
		for(int i = 1 ; i < arr.length ;i++) {
			 insertValue  = arr[i];
			 insertIndex = i -1 ;
			
			while(insertIndex >= 0 && insertValue < arr[insertIndex]) {
				arr[insertIndex + 1]  = arr[insertIndex]; // 向后移
				insertIndex -- ;
			}
			//找到插入的位置了
			if(insertIndex + 1 != i ) {
				arr[insertIndex + 1] = insertValue; 
			}
		}
	
		
		
		
		/*int insertValue  = arr[1];
		int insertIndex = 1 -1 ;
		
		while(insertIndex >= 0 && insertValue < arr[insertIndex]) {
			arr[insertIndex + 1]  = arr[insertIndex]; // 向后移
			insertIndex -- ;
		}
		//找到插入的位置了
		arr[insertIndex + 1] = insertValue; 
		System.out.println("第1轮插入");
		System.out.println(Arrays.toString(arr));
		
		
		 insertValue  = arr[2];
		 insertIndex = 2 -1 ;
		
		while(insertIndex >= 0 && insertValue < arr[insertIndex]) {
			arr[insertIndex + 1]  = arr[insertIndex]; // 向后移
			insertIndex -- ;
		}
		//找到插入的位置了
		arr[insertIndex + 1] = insertValue; 
		System.out.println("第2轮插入");
		System.out.println(Arrays.toString(arr));
		
		
		insertValue  = arr[3];
		 insertIndex = 3 -1 ;
		
		while(insertIndex >= 0 && insertValue < arr[insertIndex]) {
			arr[insertIndex + 1]  = arr[insertIndex]; // 向后移
			insertIndex -- ;
		}
		//找到插入的位置了
		arr[insertIndex + 1] = insertValue; 
		System.out.println("第3轮插入");
		System.out.println(Arrays.toString(arr));*/
	}
}

你可能感兴趣的:(数据结构,算法)