/** * 插入排序算法 把无序的集合 通过摸牌的方式排出有序形式 * @param a 无序集合 * 场景: 斗地主 * 农民手中牌 -> 有序集合 * 桌上的牌 -> 无序 * 农民每摸一张牌 会一一比较牌的大小 直到找到合适的位置才会插入该位置 比如 相同大小/比该牌大一点和比该牌小一点的中间位 * eg: 手中牌 [A,2,5,6] 摸中的牌 是4 则插入的位置是2和5的中间 最终的结果是 [A,2,4,5,6] * eg: i a j a[j] temp * 1 [1,6,-2,4] 0 1 6 * 2 [1,6,-2,4] 1 6 -2 * [1,6,6,4] 0 1 -2 * [1,1,6,4] -1 - -2 ->执行一次a[j+1]=temp; => a[0]=-2; a=>[-2,1,6,4] * 3 [-2,1,6,4] 2 6 4 * [-2,1,6,6] 1 1 4 ->执行一次a[j+1]=temp; a[2]=4; a=>[-2,1,4,6] *注:该算法把集合左边模拟成一个有序的集合 然后 用右边无序的值 在有序集合中由大到小进行比对 找到合适的位置就插入[把大于它的数值均往后移动一位] * */ public static int [] insertSort(int[] a){ for(int i=1;i<a.length;i++){ int j = i-1 ; int temp = a[i]; while (j>=0&&a[j]>temp){ a[j+1]=a[j]; j--; } a[j+1]=temp; } return a ; }
排序算法之插入排序
最新推荐文章于 2026-01-01 15:39:09 发布

1903

被折叠的 条评论
为什么被折叠?



