数据结构-插入排序
我看了一些视频,有一些对插入排序有点误解,现在来解释一下;
思想:
前后两两进行对比,如果前面大于后边,则先把后边那个数空出来,然后把前边那个向后移动一个单位,再把空出来的那个数插入进去。
图解:
画的有点粗糙,请勿见怪,大概就是分为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循环,不然会造成下标索引溢出错误。
祈福@点亮希望