数据结构-插入排序

我看了一些视频,有一些对插入排序有点误解,现在来解释一下;

思想:

    前后两两进行对比,如果前面大于后边,则先把后边那个数空出来,然后把前边那个向后移动一个单位,再把空出来的那个数插入进去。

    图解:

    

    画的有点粗糙,请勿见怪,大概就是分为3步:

    第一步:选中数组数组中的arr[i] , 先空出来。

    第二步:数组中前j个数字与其作比较,大的往后摞一摞。

    第三步:把空出来的数字插入到下标为j的数组中。

代码如下 

 1 package simpleSort;
 2 
 3 /**
 4  * 
 5  * @author caizhou
 6  *
 7  */
 8 public class charu {
 9         
10     public static void sort(long[] arr){
11         
12         long tem = 0;
13         
14         for(int i = 1 ; i < arr.length; i++){
15             tem = arr[i];
16             int j = i ;
17             //这里必须用while循环,不能用for循环,不然会造成索引溢出;
18             while(j > 0 && arr[j-1] >= tem){
19                 
20                 arr[j] = arr[j-1];
21                 j--;
22             }
23             arr[j] = tem;
24         }
25         
26     }
27 }

到这里就讲完了,注意代码里面一定要用whlie循环,不然会造成下标索引溢出错误。

    

原文地址:https://www.cnblogs.com/caizhou520/p/12582612.html