直接插入算法的学习记录
作者:互联网
学习直接插入算法记录:
思想:
直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增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