用Python 学习数据结构与算法 五、插入排序&二分查找
来源:互联网 发布:js同步和异步的理解 编辑:程序博客网 时间:2024/05/16 18:06
与普通插入排序不同的是,使用二分查找法找到合适位置再移动过往值。
上代码:
#coding=utf-8def InsertionBinarySearch(array): nLength = len(array) for x in range(1, nLength): #记录需要安放的值和下标 key = array[x] index = x #将key安放到pos下标处 leftPos = 0 rightPos = index mPos = index // 2 while mPos >= 0: #print(array, array[mPos], (leftPos, rightPos, mPos), key) #左右坐标相同退出查找 if leftPos == rightPos: break #查找的位置值大于需要排的值 if array[mPos] > key: #不进行rightPos - 1是因为最后一个元素不需要排序 rightPos = mPos mPos = (leftPos + rightPos) // 2 #小于 elif array[mPos] < key: leftPos = mPos + 1 mPos = (leftPos + rightPos) // 2 #等于 else: break #将pos原数组向后移一位 while index >= rightPos: #print((index, array[index]), (rightPos, array[index - 1])) array[index] = array[index - 1] index = index - 1 array[rightPos] = keyA = [5, 2, 4, 6, 1, 2, 3]InsertionBinarySearch(A)print(A)
输出结果:
[1, 2, 2, 3, 4, 5, 6]
原本代码错错的,晕晕乎乎的改改,结果改对了….
0 0
- 用Python 学习数据结构与算法 五、插入排序&二分查找
- 用Python 学习数据结构与算法 二、插入排序
- 数据结构与算法学习之路:二分插入排序
- 【数据结构与算法 00】二分插入排序
- python数据结构与算法28 二分查找
- python数据结构与算法 32 插入排序
- 插入排序与二分查找
- python数据结构与算法27 排序与查找 顺序查找
- Java数据结构算法之选择排序、插入排序、冒泡排序、二分查找
- 排序算法系列五(二分插入排序)
- 【数据结构与算法】二分查找
- 数据结构与算法------二分查找
- 【数据结构与算法】二分查找
- 【数据结构与算法】二分查找
- 数据结构与算法,二分查找
- 新手学习数据结构与算法---二分查找算法
- 插入,冒泡排序算法,二分查找
- 排序算法学习-二分查找
- 优化2——数据库索引
- Pulltorefresh实现ListView下拉刷新,上拉加载
- nyoj 20 吝啬的国度 (深搜)
- redis之八对象
- C++优先队列的基本使用方法
- 用Python 学习数据结构与算法 五、插入排序&二分查找
- linux shell之sed
- 4. Median of Two Sorted Arrays
- Redis之九 数据库
- hdu 3045 Picnic Cows(斜率优化dp)
- HDU-1013 九余数/(字符串和整数的转换)/极简代码
- Redis之十 RDB持久化
- DBUtils 处理Oracle 日期类型
- CodeForces 701C They Are Everywhere (尺取法)