算法——排序——快速排序
2016-04-12 20:33
363 查看
快速排序:
1.原地排序
2.O(nlogn)(最坏O(n^2) 这也是严重缺点之一)
3.要尽量保证输入的元素是基本无序的,因为在有序情况下,其时间复杂度是O(n^2)
4.不稳定
5.与归并排序一样是分治法的经典算法
Code:
1.原地排序
2.O(nlogn)(最坏O(n^2) 这也是严重缺点之一)
3.要尽量保证输入的元素是基本无序的,因为在有序情况下,其时间复杂度是O(n^2)
4.不稳定
5.与归并排序一样是分治法的经典算法
Code:
class Sort: @classmethod def sort(cls, arr): cls.sortQuick(arr, 0, len(arr) -1) @classmethod def sortQuick(cls, arr, lo, hi): if lo >= hi: return p = cls.position(arr, lo, hi) cls.sortQuick(arr, lo, p) cls.sortQuick(arr, p+1, hi) @classmethod def position(cls, arr, lo, hi): v = arr[lo] i = lo j = hi while True: while i < hi and arr[i] <= v: i += 1 while j > lo and arr[j] >= v: j -= 1 if i >= j: break else: arr[i], arr[j] = arr[j], arr[i] arr[lo], arr[j] = arr[j], arr[lo] return j
相关文章推荐
- Linux进程间通信——使用信号量
- Android Fragment生命周期
- Linux常见命令
- 《leetCode》:Kth Smallest Element in a BST
- 迷宫问题
- 行人检测 读书笔记 综述(1)
- LeetCode *** 46. Permutations
- Error C2662
- nginx学习记录
- Thread.isAlive()
- 第三方框架简介ios
- markdown编辑器使用指导
- c#方法生成mysql if方法(算工作日)
- c++ 设计模式之单件模式
- 广播和Service唤醒被杀死的android app
- window.parent与window.opener的区别与使用
- Laxcus大数据管理系统2.0(3)- 第一章 基础概述 1.2 产品特点
- 你足够了解Context吗?
- PSobj [3] 脱墨喷溅和炫光特效
- android基础---->LruCache的使用及原理