leetcode总结-- 排序算法(内部排序)
来源:互联网 发布:部落冲突九本升级数据 编辑:程序博客网 时间:2024/06/09 17:34
包括quick_sort(不稳定), merge_sort(稳定), bubble_sort(稳定), selection_sort(不稳定), insertion_sort(稳定)
code整理如下,我们可以发现所有的O(
for i in xrange(len(nums) - 1):
说明它们都要进行len(nums) - 1次循环,例如bubble_sort要冒泡len(nums) - 1次。
ref: http://www.jianshu.com/p/ae97c3ceea8d
http://www.jianshu.com/p/f5baf7f27a7e
# your code goes heredef quick_sort(nums, low, high): p = nums[low] i,j = low, high while i < j: while j > i and nums[j] >= p: j -= 1 nums[i] = nums[j] while i < j and nums[i] <= p: i += 1 nums[j] = nums[i] nums[i] = p return idef qsort(nums, low, high): if low < high: loc = quick_sort(nums, low, high) qsort(nums, low, loc - 1) qsort(nums, loc + 1, high)def merge_sort(nums): if len(nums) > 1: mid = len(nums) / 2 left = nums[:mid] right = nums[mid:] merge_sort(left) merge_sort(right) i,j = 0,0 k = 0 while i < len(left) and j < len(right): if left[i] <= right[j]: nums[k] = left[i] i += 1 else: nums[k] = right[j] j += 1 k += 1 while i < len(left): nums[k] = left[i] i += 1 k += 1 while j < len(right): nums[k] = right[j] j += 1 k += 1def bubble_sort(nums): for i in xrange(len(nums) - 1): for j in xrange(len(nums) - 1 - i):# it is not length - 2 - i if nums[j] > nums[j + 1]: nums[j], nums[j + 1] = nums[j + 1], nums[j]def selection_sort(nums): for i in xrange(len(nums) - 1): min_idx = i for j in xrange(i + 1, len(nums)): if nums[j] < nums[min_idx]: min_idx = j if min_idx != i: nums[i], nums[min_idx] = nums[min_idx], nums[i]def insertion_sort(nums): for i in xrange(len(nums) - 1): for j in xrange(i + 1, -1, -1): if nums[j] < nums[j - 1]: nums[j], nums[j - 1] = nums[j - 1], nums[j] else: breakif __name__ == '__main__': a = [1,4,8,2,9,2] #qsort(a,0, len(a) - 1) #merge_sort(a) #bubble_sort(a) #selection_sort(a) insertion_sort(a) print a
0 0
- leetcode总结-- 排序算法(内部排序)
- 内部排序算法总结
- 内部排序算法 总结
- 内部排序算法总结
- 内部排序算法总结
- 内部排序算法总结
- 内部排序常用算法总结
- 算法 - 内部排序方法总结
- 八大内部排序算法总结
- 内部排序总结(附各种排序算法源码)
- 内部排序(五)堆排序算法
- 内部排序算法1(插入排序)
- 内部排序算法2(交换排序)
- 内部排序算法3(选择排序)
- 内部排序算法4(归并排序)
- 内部排序总结 (二)交换排序
- 若干常用(内部)排序算法的总结
- 几个内部排序算法的总结(JAVA版)
- Java细节之static方法重写
- Linux meld安装
- Bootstrap面包屑导航、分页、标签、徽章
- Spring配置文件中的 default-lazy-init="true"
- join中on和where的区别
- leetcode总结-- 排序算法(内部排序)
- JAVA的extends用法
- Ajax 得到的值对全局变量赋值没有起作用解决办法和 Jquery append()进去的动态代码 点击的js没起作用
- XML基础
- Objective-C学习笔记(一)——OC语言的特点
- CodeForces 407B
- 【人脸识别】人脸识别必读论文
- php -> =>的问题
- 今后需要养成的习惯