Python实现几种常见排序代码
来源:互联网 发布:淮安seo大牛 编辑:程序博客网 时间:2024/06/05 09:45
插入排序法:
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。
def insert_sort(lists): # 插入排序 count = len(lists) for i in range(1, count): key = lists[i] j = i - 1 while j >= 0: if lists[j] > key: lists[j + 1] = lists[j] lists[j] = key j -= 1 return lists
冒泡排序法
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
def bubble(list): m=len(list) for i in range(len(list)-1): m=m-1 for j in range(m): if list[j]>list[j+1]: list[j],list[j+1]=list[j+1],list[j] return list
快速排序法:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
def quicksort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quicksort(left) + middle + quicksort(right)
直接选择排序:
基本思想:第1趟,在待排序记录r1 ~ r[n]中选出最小的记录,将它与r1交换;第2趟,在待排序记录r2 ~ r[n]中选出最小的记录,将它与r2交换;以此类推,第i趟在待排序记录r[i] ~ r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕
def select_sort(lists): # 选择排序 count = len(lists) for i in range(0,count): min=i for j in range(i+1,count): if lists[min]>lists[j]: min=j lists[min],lists[i]=lists[i],lists[min] return lists
阅读全文
1 0
- Python实现几种常见排序代码
- Java实现几种常见排序算法代码
- 几种常见排序算法的Java代码实现
- Java实现几种常见排序算法代码
- 几种常见的排序算法 及代码实现
- 几种常见排序算法实现
- Java实现几种常见排序方法
- 几种常见的排序算法实现
- 几种常见的排序C实现
- 几种常见排序算法实现
- Java实现几种常见排序方法
- 几种常见排序算法的实现
- Java实现几种常见排序方法
- Java实现几种常见排序方法
- Java实现几种常见排序方法
- 几种常见排序算法_PHP实现
- Java实现几种常见排序方法
- Java实现几种常见排序方法
- Delphi检测.Net版本
- 【题解】F(x)
- 踩着坑画bounding-box
- mysql的几种链接情况
- JAVA 绘制验证码图像及解决黑色背景问题
- Python实现几种常见排序代码
- 系统安全性随想
- fat jar打包jar后,程序中设置的图标不显示的问题
- 用hyperscan-python时,fatal error: Python.h: No such file or directory
- https配置问题,基于西部数码服务器
- iOS 10.3 下使用 Charles抓包证书报错
- “Beginning Python”(七)“matplotlib”
- MapReduce的Shuffle过程详解
- 日志系列--程序日志处理挑战与方案