package com.edu; import java.util.Arrays; /** - 插入排序的思路
- 1. 将待排序的数组的第一位看作是有序序列,后面的看作是待排序的无序的序列
- 2. 从头到尾开始扫描无序的序列,然后把无序数列中的值插入到有序序列的合适的位置
- @author daixianren
* */ public class InsertDemo { public static void main(String[] args) { int arr[] = {98,2,100,18,78,87}; System.out.println("原始数据为:"+Arrays.toString(arr)); insertSort(arr); } /** */ private static void insertSort(int[] arr) { // 第一轮排序 int current = arr[1] ; int index = 1 ; for(int i = 1 ;i > 0 ;i--) { if(current < arr[i-1]) { // 当前的值需要向后面移动一位 arr[i] = arr[i-1] ; index = i -1 ; } } if(index != 1) { arr[index] = current ; }
System.out.println("第一轮排序之后的结果为:"+Arrays.toString(arr));
current = arr[2] ; index = 2 ; for(int i = 2 ;i > 0 ;i--) { if(current < arr[i-1]) { // 当前的值需要向后面移动一位 arr[i] = arr[i-1] ; index = i -1 ; } } if(index != 2) { arr[index] = current ; }
System.out.println("第二轮排序之后的结果为:"+Arrays.toString(arr));
current = arr[3] ; index = 3 ; for(int i = 3 ;i > 0 ;i--) { if(current < arr[i-1]) { // 当前的值需要向后面移动一位 arr[i] = arr[i-1] ; index = i -1 ; } } if(index !=3) { arr[index] = current ; } System.out.println("第三轮排序之后的结果为:"+Arrays.toString(arr));
current = arr[4] ; index = 4 ; for(int i = 4 ;i > 0 ;i--) { if(current < arr[i-1]) { // 当前的值需要向后面移动一位 arr[i] = arr[i-1] ; index = i -1 ; } } if(index !=4) { arr[index] = current ; }
System.out.println("第四轮排序之后的结果为:"+Arrays.toString(arr)); // current = arr[5] ; index = 0 ; for(int i = 5 ;i > 0 ;i--) { if(current < arr[i-1]) { // 当前的值需要向后面移动一位 arr[i] = arr[i-1] ; index = i -1 ; } } if(index !=5) { arr[index] = current ; }
System.out.println("第五轮排序之后的结果为:"+Arrays.toString(arr)); } }
|