数据结构与算法-排序(二)
来源:互联网 发布:天尚网络机顶盒遥控器 编辑:程序博客网 时间:2024/06/07 07:44
希尔排序
- 基本排序
将原本有大量记录数的记录进行分组。分割成若干序列,此时每个子序列待排序的记录个数就比较少了,然后在这些子序列内分别进行直接插入排序,当整个序列都基本有序时,再对全体记录执行一次直接插入排序。其时间复杂度为O(n**3/2),突破了O(n*n)。
快速排序
- 基本思想
快速排序是基于一种“二分”的思想,相比较冒泡排序,总的比较和交换的次数减少。核心是设置基准点,跳跃式交换,平均时间复杂度为O(NlogN)。
代码实现(python)
import randomdef shell_sort(test_list): increment = len(test_list) while increment > 1: # increment分割的序列 increment = increment/5 + 1 # 以下就是直接插入排序的代码 for i in range(increment, len(test_list)): # 每一个子序列都设定一个基准 temp = test_list[i] j = i - 1 while j >= 0 and test_list[j] > temp: test_list[j + 1] = test_list[j] j -= 1 test_list[j + 1] = temp return test_listdef quick_sort(arr, left, right): if left > right: return # temp存的基准数 temp = arr[left] pivot_index = left pivot_end = right while pivot_index != pivot_end: # 先从右往左找大于基准数的数 while arr[pivot_end] >= temp and pivot_index < pivot_end: pivot_end -= 1 # 再从左往右找小于基准数的数 while arr[pivot_index] <= temp and pivot_index < pivot_end: pivot_index += 1 # 交换两个数在数组中的位置 if pivot_index < pivot_end: arr[pivot_index], arr[pivot_end] = arr[pivot_end], arr[pivot_index] # 将基准位置归位 arr[left], arr[pivot_index] = arr[pivot_index], arr[left] # 继续处理左边的,这是一个递归的过程 quick_sort(arr, left, pivot_index - 1) # 继续处理右边的,这是一个递归的过程 quick_sort(arr, pivot_index + 1, right) return arrif __name__ == '__main__': quick_list = [random.randint(1, 100) for _ in range(100)] print(quick_sort(quick_list, 0, len(quick_list)-1)) shell_list = [random.randint(1, 100) for _ in range(100)] print(quick_sort(shell_list, 0, len(shell_list)-1))
0 0
- 数据结构与算法-排序(二)
- 数据结构与算法之二冒泡排序
- 【数据结构与算法】二路归并排序
- <二>java数据结构与算法 冒泡排序
- 数据结构与算法之二 排序
- Java数据结构与算法《二》简单排序
- 数据结构与算法二:插入排序
- 数据结构与算法--查找与排序(二)
- 【数据结构与算法】排序
- 数据结构与算法 -排序
- 数据结构与算法:排序
- 【数据结构与算法】排序
- [算法与数据结构] 排序
- 数据结构与算法:排序
- 用Python 学习数据结构与算法 二、插入排序
- 数据结构与算法(二)冒泡&&插入&&选择 简单排序
- 数据结构与算法(27)——排序(二)
- 数据结构与算法二
- 达内C++全套21天课程
- 最大子序列和-数据结构学习笔记1.3(基本概念)
- 奔腾绿色多标签浏览器界面的开发视频教程(VC,MFC)
- 实现一个带下拉弹簧动画的 ScrollView
- activiz.net 显示圆柱体
- 数据结构与算法-排序(二)
- 3D陀螺仪脚本(VR)
- OpenMP的一点使用经验
- 初探Oracle--Oracle查询操作
- 单片机的要务——控制外设
- sublime text3 的安装与配置总结
- IO流(1)
- tomcat 一个IP绑定多个域名不同的项目
- VC网络项目实战