python 下的数据结构与算法---6:6大排序算法
2016-03-26 20:22
711 查看
顶先最后推荐:哈哈,意思是放到顶部强调其重要性,但是应该我总结的六种算法看完了后再看的一篇醍醐灌顶的文章
一:冒泡排序(Bubble Sort)
原理:假设有n个数,第一轮时:从第一个元素开始,与相邻的元素比较,如果前面的元素小就交换,直到第n-1个元素时,这样的结果是将最大的元素放到了最后,同理,第二轮还是从第一个元素开始比较,直到第n-2个元素,这样能够把剩下的n-1个数中的最大的数放到第n-1的位置,一直这样进行n-1轮就能够完成排序。
快速排序
同理可以分析出其时间复杂度为O(nlogn)
一:冒泡排序(Bubble Sort)
原理:假设有n个数,第一轮时:从第一个元素开始,与相邻的元素比较,如果前面的元素小就交换,直到第n-1个元素时,这样的结果是将最大的元素放到了最后,同理,第二轮还是从第一个元素开始比较,直到第n-2个元素,这样能够把剩下的n-1个数中的最大的数放到第n-1的位置,一直这样进行n-1轮就能够完成排序。
import random def partition(seq, start, stop): pivotIndex = start pivot = seq[pivotIndex] i = start+1 j = stop-1 while i <= j: while pivot > seq[i]: i+=1 while pivot < seq[j]: j-=1 if i < j: seq[j],seq[i] = seq[i],seq[j] i+=1 j-=1 seq[pivotIndex],seq[j] = seq[j],pivot return j def quicksortRecursively(seq, start, stop): if start >= stop-1: return pivotIndex = partition(seq, start, stop) quicksortRecursively(seq, start, pivotIndex) quicksortRecursively(seq, pivotIndex+1, stop) def quicksort(seq): # randomize the sequence first for i in range(len(seq)): j = random.randint(0,len(seq)-1) seq[i],seq[j] = seq[j],seq[i] quicksortRecursively(seq, 0, len(seq)) a=[3,4,6,8,2,1,5,9] quicksort(a) print(a)
快速排序
同理可以分析出其时间复杂度为O(nlogn)
相关文章推荐
- 数据结构与算法——两个大整数的乘积问题
- 排序算法白话实现
- 不相交集类算法
- 【数据结构栈应用系列】括号匹配
- 【数据结构栈应用系列】括号匹配
- HDU 3068 Manacher 模版题
- Redis常用数据结构及操作
- 大整数相乘(包含小数)
- 数据结构,可并堆(左偏树):COGS [APIO2012] 派遣
- Linux USB 驱动开发(二)—— USB 驱动几个重要数据结构
- 数据结构之线性表ArrayList小结(一)
- 《数据结构与算法分析C++描述》别人总结
- 二叉排序树
- python 下的数据结构与算法---5:递归(Recursion)
- 算法和数据结构学习笔记(2)——线性表
- Java中常见数据结构:list与map
- JavaScript数据结构——链表
- HDU 4286 Data Handler(splay)
- poj 3468 A Simple Problem with Integers
- bzoj 1588 营业额统计