排序算法之插入排序

落日映苍穹つ 2022-12-29 15:28 256阅读 0赞

[插入排序-普通插入排序]

1.算法思想

  • 将元素a视为基序列,遍历数组将元素a右边的元素依次插入序列中,找到比自己小的数置于其后,保证序列一直处于已排序的状态。

2.流程解析

  • 将元素a作为基序列
  • 向序列中插入元素b,比较a、b

    • 若b < a,将a向后移动一个位置,b赋值给a,序列:[b、a]
    • 若b > a,则不变
  • 插入元素c,比较c与a、b

    • 若c < b < a,将b后移,a后移,c前置,序列:[c、b、a]
    • 若b < c < a,将b后移,a不变,c置于a后,序列:[b、c、a]
  • 插入元素d,以此类推

3.动态排序图img

4.代码实现

  1. public static void insertionSort(int[] array){
  2. //定义insert,用于存放取出元素
  3. int insert;
  4. for (int i = 0; i < array.length - 1; i++) {
  5. //取出元素值
  6. insert= array[i + 1];
  7. //待比较元素下标
  8. int preIndex = i;
  9. while(preIndex >= 0 && array[preIndex] > insert){
  10. //待比较元素>取出元素,将待比较元素后移一个位置
  11. array[preIndex + 1] = array[preIndex];
  12. //待比较下标-1,继续与取出元素比较
  13. preIndex--;
  14. }
  15. //待比较元素<取出元素。将取出元素值放在该待比较元素的后一个位置
  16. array[preIndex + 1] = insert;
  17. }
  18. }
  19. public static void main(String[] args) {
  20. int[] array = { 6 , 1 , 3 , 7 , 2 , 9 , 10 , 8 , 5 , 4};
  21. System.out.println("排序前Array:"+ Arrays.toString(array));
  22. insertionSort(array);
  23. System.out.println("排序后Array:"+ Arrays.toString(array));
  24. /* * 排序前Array:[6, 1, 3, 7, 2, 9, 10, 8, 5, 4] * 排序后Array:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] */
  25. }

小结理解≠学会,一定要打断点,debug逐步调试,手动敲一遍代码!!!

发表评论

表情:
评论列表 (有 0 条评论,256人围观)

还没有评论,来说两句吧...

相关阅读

    相关 排序算法插入排序

    \[插入排序-普通插入排序\] 1.算法思想 将元素a视为基序列,遍历数组将元素a右边的元素依次插入序列中,找到比自己小的数置于其后,保证序列一直处于已排序的状态

    相关 排序算法插入排序

    插入排序> 对于排序相信大家都不陌生,就是将一组数据按照从大到小(降序)或者是从小到大(升序)进行排列,那仫常见的排序算法有哪些呢?我总结了以下几种常见的排序算法,在本篇文

    相关 排序算法插入排序

    插入排序类似于打扑克,取出未排序的一张牌插入到已排序的牌中,取出的一张牌是在已排序好的牌中从后向前查找,直到查找到比当前牌小的那个位置,然后插入进去 示例代码: \[9, 1