zoukankan      html  css  js  c++  java
  • 数据结构与算法-插入排序

    代码实现

     1 //插入排序
     2         public static void InsertSort(int[] arr)
     3         {
     4 
     5             for (int i = 1; i < arr.Length; i++)
     6             {
     7                 for (int j = i; j > 0 ; j--)
     8                 {
     9                     if (arr[j]<arr[j-1])
    10                     {
    11                         ExchangeLocation(arr, j, j - 1);
    12                     }
    13                 }
    14             }
    15         }

     待优化的地方:比较的时候如果说可以交换位置,可以存一个变量记录交换的索引,待都比较完后才交换,然后交换位置后面的元素索引后移一个位置,这样可以减小交换的开销

     1 //优化插入排序(位移法)
     2         public static void OptimizedInsertSort(int[] arr)
     3         {
     4             
     5             for (int i = 1; i < arr.Length; i++)
     6             {
     7                 for (int j = i; j > 0; j--)
     8                 {
     9                     int changeIndex = j;
    10                     int original_value = arr[j];//记录当前比较起始位置的值
    11 
    12                     if (original_value < arr[j - 1])
    13                     {
    14                         //ExchangeLocation(arr, j, j - 1);
    15                         arr[j] = arr[j - 1];
    16                         changeIndex = j - 1;
    17                     }
    18 
    19                     arr[changeIndex] = original_value;
    20 
    21                 }
    22             }
    23         }

  • 相关阅读:
    程序猿编程,软件设计都干什么?
    工作流——来龙去脉
    开发编码流程
    我的spring-boot开发环境
    JSR 303
    项目中java异常处理
    学习交流,一些数据结构和算法实现!
    C运算符
    js锚点
    玻璃工艺学笔记
  • 原文地址:https://www.cnblogs.com/Spinoza/p/13782846.html
Copyright © 2011-2022 走看看