【数据结构&&算法系列】快速排序简单介绍及实现
来源:互联网 发布:linux 映射内网端口 编辑:程序博客网 时间:2024/05/27 20:24
快速排序就像它的名字一样,速度非常快。
快速排序虽然最坏情况时间复杂度为o(n*n),但它通常是实际排序应用中最好的选择,因为它的平均性能很好。
它的期望时间复杂度为o(n*logn),而且o(n*logn)中隐含的常数因子非常小。
另外它还能够进行原址排序,甚至在虚存环境中也能很好地工作。
快排的三步分治过程为分解、解决、合并。因为子数组都是原址排序的,所以不需要合并操作。
快排的关键步骤是分解,分解的主要目的是把数组分为不大于主元的一部分和不小于主元的一部分。
下面是实现代码,其中partition中的 i 用于确定不大于主元的元素的位置,而 j 则用于遍历子数组。
#coding:utf-8def quick_sort(arr,p,r):if p<r:q = partition(arr,p,r)quick_sort(arr,p,q-1)quick_sort(arr,q,r)def partition(arr,p,r):key = arr[r]i = p-1for j in range(p,r):if arr[j]<key:i += 1arr[i],arr[j] = arr[j],arr[i]# show_arr(arr) #打印中间过程arr[i+1],arr[r] = arr[r],arr[i+1]return i+1def show_arr(arr): print "[", ", ".join([str(x) for x in arr]), "]" if __name__ == "__main__":arr = [2,8,7,1,3,5,6,4]quick_sort(arr,0,len(arr)-1)show_arr(arr)
0 0
- 【数据结构&&算法系列】快速排序简单介绍及实现
- 【数据结构&&算法系列】插入排序简单介绍及python代码
- 【数据结构&&算法系列】归并排序简单介绍及python代码
- 【数据结构&&算法系列】堆排序简单介绍及其实现
- 数据结构——快速排序原理及算法Java实现
- 数据结构+算法系列五:I 快速排序
- 排序算法-----快速排序简单介绍
- 数据结构算法之排序系列Java、C源码实现(6)--快速排序
- 快速排序算法及实现
- 快速排序算法及实现
- 数据结构笔记-快速排序简单实现
- java实现简单排序算法:快速排序
- 数据结构与算法:C++实现快速排序
- (十二)数据结构之快速排序算法实现
- 数据结构和算法学习系列之快速排序的Partition函数一种实现方法
- 【数据结构&&算法系列】KMP算法介绍及实现(c++ && java)
- 【转载】【数据结构&&算法系列】KMP算法介绍及实现(c++ && java)
- 简单数据结构总结及常用排序算法
- OpenFire 部署
- 异或的使用
- 代码实现UITableViewCell表视图单元定制
- titanium 引用外部js
- WIP 离散工单导入 API Demo
- 【数据结构&&算法系列】快速排序简单介绍及实现
- UVa 11817 Tunnelling the Earth(球面距离)
- 【OpenGL游戏开发之一】MAC OS X And Win7 vs2010 搭建OpenGL
- 【Android】在有menu键的手机上显示ActionBar上的Menu键
- 邻居好说话:冒泡排序
- 澳洲品牌SONIQ声光登入中国 多重量级商品发布
- spring整合hibernate(注解、xml)applicationContext.xml配置
- 表视图的分组分区和索引分区
- <四> cocos2dx动画常见22种特效