编程语言
首页 > 编程语言> > 直接插入算法的学习记录

直接插入算法的学习记录

作者:互联网

学习直接插入算法记录:

思想:
直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。
这个句话怎么理解呢:这句话的重点是已排好的有序表中插入一个待排序的元素;
举个例子:

int[] array = new[] {8, 10, 50, 24, 13, 86, 16, 13, 14, 9, 6, 0};

这是一个无序数组对它进行排序
1.首先我们可以把第一个元素 8 看作是一个有序的表,(即8前面的数字都比 8 要小)。
2.把8之后的都看作为待排序的元素
好下面上代码解释

2.代码

   /// <summary>
    /// 直接插入排序
    /// </summary>
    /// <param name="array"></param>
  public static void StraightInsertionSort(int[] array) {
  //此时我们已经将8看作是有序的序列(即8前面的数字都比8小)
  //所以我们从待排的第一个元素开始遍历
        for (int i = 1; i < array.Length; i++) {
            int sentinel = array[i]; // 找出第一个待排元素
            int j = i - 1; //此时他要跟有序序列的最后一个元素进行比较
            //如果 j > 0 并且待排元素比有序的最后一个元素要小 则将有序元素进行后移一位 再此跟倒数第二未元素进行比较,直到找到比到比待排元素小的停止
            while (j >= 0 && sentinel < array[j]) {
                array[j + 1] = array[j];
                j--;
            }
            array[j + 1] = sentinel;
        }
    }

总结一点就是将元素插入到合适的位置。

推荐学习算法的网站:算法学习-里面有演示

最后:能力有限如果有解释不清楚的地方望原谅。

标签:记录,int,直接插入,元素,算法,有序,sentinel,array,排序
来源: https://blog.csdn.net/weixin_39558555/article/details/112214653