摘要: 通过构建有序序列,对于未排序部分,在已排序序列中从后向前扫描,找到相应的位置并插入。 如果输入序列已经是排好序的话,插入排序出现最佳情况。 如果输入序列是逆序排列的,将出现最坏情况。 如果比较操作的代价比交换操作大的话,可以采用二分查找法来减少比较操作的次数,即二分查找插入排序。 from rand 阅读全文
posted @ 2018-08-22 14:00 KeithTt 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 选择排序分为升序或降序排列 两两比较大小,找出极值(极大值或极小值),然后放置到最后或最前 减少了交换次数,提高了效率,性能略好于冒泡排序 升序,改变一下判断条件即可 t = [1, 9, 8, 5, 6, 7, 4, 3, 2] for i in range(len(t) 1): minindex 阅读全文
posted @ 2018-08-22 13:51 KeithTt 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序属于交换排序 相邻元素两两比较大小,如果前面比后面大,就交换位置,最后一个元素将是最大的数 时间复杂度为O(n²) 优化点: \ 冒泡法需要一轮一轮进行比较,如果某一趟中,一次都没有交换,那就说明序列已经排好序了,就可以停止循环了 参考: https://zh.wikipedia.org/w 阅读全文
posted @ 2018-08-22 13:34 KeithTt 阅读(177) 评论(0) 推荐(0) 编辑