插入排序

插入排序是一种简单的排序算法,它的基本思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

插入排序的步骤如下:

  1. 从第一个元素开始,该元素可以认为已经被排序;
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描;
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置;
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
  5. 将新元素插入到该位置后;
  6. 重复步骤2~5。

这是一个稳定的排序算法,即相等的元素保持其原有的顺序。然而,它不是最有效的排序算法,尤其是对于大型数据集。

C#代码如下:

        /// <summary>
        /// 插入排序法
        /// </summary>
        public static void InsertSort(int[] array)
        {
            //从索引1开始
            for (int i = 1; i < array.Length; i++)
            {
                //当前要对比的值
                int currentVal = array[i];
                //获取前一个值得索引
                int lastIndex = i - 1;

                //如果当前值大于前一个值,则进行换位处理
                while (lastIndex >= 0 && array[lastIndex] > currentVal)
                {
                    //将前一个值后移
                    array[lastIndex + 1] = array[lastIndex];
                    //继续获取前一个值得索引
                    lastIndex--;
                }

                //如果while循环没有执行。那么此处也没有必要执行
                if ((i - 1) != lastIndex)
                {
                    array[lastIndex + 1] = currentVal;
                }
            }
        }

 

posted @ 2023-08-24 18:20  初来乍到的菜鸟  阅读(73)  评论(0)    收藏  举报