摘要: 折半插入排序思想和直接插入排序类似。 1)找到插入位置; 2)依次后移正确位置及后面的元素。 区别是查找插入位置的方法不同。 折半插入排序使用的折半查找法在一个已经有序的序列中找到查找位置。 注意,折半查找法的一个基本条件就是序列已经有序。 直接上代码: 阅读全文
posted @ 2018-03-06 18:38 小杜同学的嘚啵嘚 阅读(1716) 评论(0) 推荐(0) 编辑
摘要: 直接上代码: 考虑一下,如果冒泡法在执行期间,执行到某个元素(不是最后一个元素),此时如果序列已经有序,那么算法会停下来吗?答案当然是否定的,只有遍历完整个待排序序列算法才会停下来。那么后面剩余元素的遍历就成了徒劳的浪费时间,因此,我们可以为我们的算法立个flag来标记一下,以确定它不会执行多余操作 阅读全文
posted @ 2018-03-06 16:44 小杜同学的嘚啵嘚 阅读(3284) 评论(0) 推荐(0) 编辑
摘要: 直接插入算法:每趟将一个待排序的关键字按照其值的大小插入到已经排好的部分有序序列的适当位置上,直到所有待排序的关键字都被插入到有序序列中为止。 理论上,在直接插入排序中第二层循环是可以提前结束的,即某个元素在寻找自己合适位置时并未循环遍历到序列最前端。 这是直接插入排序和简单选择排序最大的不同。也是 阅读全文
posted @ 2018-03-06 15:37 小杜同学的嘚啵嘚 阅读(2223) 评论(0) 推荐(0) 编辑
摘要: 简单选择排序采用最简单的选择方法,即在剩余序列中选出最小(或最大)的关键字,和剩余序列的第一个关键字交换位置,依次选择下去,直至使整个序列有序。 算法中两层循环的执行次数和初始序列没有关系,第二层循环每一次都需要遍历剩余带排序序列,故时间复杂度为O(n2) 直接上代码: 对于简单选择排序,一趟排序后 阅读全文
posted @ 2018-03-06 11:04 小杜同学的嘚啵嘚 阅读(4970) 评论(0) 推荐(0) 编辑