将数据结构的10个排序用python实现,以便快速查找或学习。

1 冒泡排序

###冒泡排序
def bubbleSort(arr):length = len(arr)for i in range(length-1):for j in range(length-1-i):if arr[j]>arr[j+1]:arr[j+1],arr[j] = arr[j],arr[j+1]return arr

2 选择排序


#选择排序
def selectionSort(arr):length = len(arr)for i in range(length-1):minIndex = ifor j in range(i+1,length):if arr[j]<arr[minIndex]:minIndex = j arr[i],arr[minIndex] = arr[minIndex],arr[i]return arr

3 插入排序

#插入排序
def insertSort(arr):length = len(arr)for i in range(1,length):preIndex = i-1current = arr[i]while(preIndex>=0 and arr[preIndex]>current):arr[preIndex+1] = arr[preIndex]preIndex -= 1arr[preIndex+1] = currentreturn arr

4希尔排序

##希尔排序
def shellSort(arr):length = len(arr)gap = 1while gap<(length/3):gap = gap*3 +1while gap >= 1:for i in range(gap,length):j = iwhile j >=gap and arr[j]<arr[j-gap]:arr[j],arr[j-gap] = arr[j-gap],arr[j]j -=gapgap = gap//3return arr

5  归并排序

#归并排序
def mergeSort(arr):length = len(arr)if length<2:return arrmiddle = length//2left = mergeSort(arr[:middle])right = mergeSort(arr[middle:])return merge(left,right)
def merge(left,right):l,r = 0,0result = []while (l<len(left) and r<len(right) ):if left[l] < right[r]:result.append(left[l])l += 1else:result.append(right[r])r +=1result += left[l:]result += right[r:]return result

6 快速排序


##快速排序
def quickSort(arr):if len(arr)<2:return arrelse:key = arr[0]low = [value for value in arr[1:] if value < key]high = [value for value in arr[1:] if value > key]equal = [value for value in arr[1:] if value == key]return quickSort(low)+equal+quickSort(high)

7 堆排序

##堆排序
def heapSort(arr):from collections import dequeL = deque(arr)L.appendleft(0)length = len(L)-1first = length//2for i in range(first):heap_adjust(L,first-i,length)for i in range(length-1):L = swap(L,1,length-i)heap_adjust(L,1,length-i-1)return [L[i] for i in range(1,len(L))]
def heap_adjust(L,start,end):temp = L[start]i = startj = 2*iwhile j<=end:if (j<end) and L[j]<L[j+1]:j+=1if temp < L[j]:L[i] = L[j]i = jj = 2*ielse:breakL[i] = temp
def swap(L,i,j):L[i],L[j] =L[j],L[i]return L

8 计数排序

##计数排序
def countingSort(arr):maxValue = max(arr)bucket = [0]*(maxValue+1)sortIndex = 0for i in arr:bucket[i] +=1for j in range(maxValue+1):while bucket[j]>0:arr[sortIndex] = jbucket[j] -=1sortIndex +=1return arr

9 桶排序

##桶排序
def bucketSort(arr):maxValue = max(arr)bucket = [0]*(maxValue+1)for i in arr:bucket[i] +=1sort_nums = []for i in range(len(bucket)):if bucket[i] !=0:for j in range(bucket[i]):sort_nums.append(i)return sort_nums

10 基数排序

   ##基数排序
def radixSort(arr):import mathradix = 10k = int(math.ceil(math.log(max(arr),radix)))  #math.ceil 向上取整  bucket = [[] for i in range(radix)]for i in range(1,k+1):for val in arr:bucket[val%(radix**i)//(radix**(i-1))].append(val)del arr[:]for each in bucket:arr.extend(each)bucket = [[] for i in range(radix)]return arr

输入测试序列:
arr = [31,38,5,15,26,36,27,2,13]
bucketSort(arr)

python知识:几个排序算法的python实现相关推荐

  1. 一篇夯实一个知识点系列--python实现十大排序算法

    写在前面 排序是查找是算法中最重要的两个概念,我们大多数情况下都在进行查找和排序.科学家们穷尽努力,想使得排序和查找能够更加快速.本篇文章用Python实现十大排序算法. 很多人学习python,不知 ...

  2. 八大排序算法的 Python 实现

    八大排序算法的 Python 实现 本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入 ...

  3. 排序算法 快速排序 python 0913

    排序算法 快速排序 python 0913 快速排序 思路 定义快排方法 接收参数:原始列表,起始位置,终止位置 判断是否符合快排条件,当起始下标与终止下标相等时,代表只有一个元素,无法排序,退出 一 ...

  4. 排序算法python实现_合并排序算法– Java,C和Python实现

    排序算法python实现 Merge sort is one of the most efficient sorting algorithms. It works on the principle o ...

  5. python实现希尔排序_希尔排序算法的python实现

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. def shellSort(items): inc = len(items) / 2 wh ...

  6. python快速排序算法没看懂_你需要知道的九大排序算法【Python实现】之快速排序...

    五.快速排序 基本思想:  通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序. 算法实现: ​ #coding: ...

  7. 详解排序算法(Python实现)

    sorting-algorithms-python Python的内置排序算法 与许多其他高级编程语言一样,Python语言提供了使用sorted()函数对数据进行开箱即用的功能.示例: >&g ...

  8. 【Kick Algorithm】十大排序算法及其Python实现

    文章来源于NewBeeNLP,作者kaiyuan 写在前面 看到好像春招都已经陆续都开始了,最近抽空打算把自己和朋友的经验整理一下分享出来.作为一个刚刚经历秋招打击的自闭儿童,可以非常负责任地说手撕算 ...

  9. Python版常见的排序算法

    学习笔记 排序算法 目录 排序分为两类,比较类排序和非比较类排序,比较类排序通过比较来决定元素间的相对次序,其时间复杂度不能突破O(nlogn):非比较类排序可以突破基于比较排序的时间下界,缺点就是一 ...

  10. python 十大经典排序算法

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算法有:插入排序.希尔排序.选 ...

最新文章

  1. Oracle 11g 中告警日志的位置
  2. Object 的静态方法之 defineProperties 以及数据劫持效果
  3. 深度学习环境搭建之Anaconda安装keras
  4. python spider怎么用_python爬虫入门(七)Scrapy框架之Spider类
  5. dorado 刷新_dorado7常用内容
  6. Linux 配置本地yum源步骤
  7. php中获取不到当前元素,PHP 中数组获取不到元素
  8. GraphPad Prism 9 for Mac 的使用教程
  9. c#万能视频播放器(附代码)
  10. linux mentohust dhcp,Ubuntu下Mentohust的配置
  11. 智能家居软件测试用例,智能家居助理HomeAssistant的实践和测试
  12. Arduino驱动315MHZ无线模块
  13. vue2知识点:数据代理
  14. 如何进行用户行为分析
  15. 广东2018年6月计算机一级试题,2018年9月计算机等级考试一级试题及答案.doc
  16. 大数据量(例如几十万或者几百万的量)怎么导入到excel中
  17. 超低功耗芯片ESP8266
  18. Plus and Multiply
  19. 华为无线三层无线简单配置
  20. uclinux不是linux

热门文章

  1. tableau可视化函数使用案例(六十七)-如何用Tableau获取数据并对数据进行操作?
  2. R语言实战应用-基于R语言的对应分析
  3. Meanshift解析
  4. 自编码器及相关变种算法简介
  5. 计算机外观类型,知道你的笔记本电脑是什么类型的吗?五大类型派对号入座
  6. LeetCode题组:第1162题-地图分析
  7. LeetCode-二叉树-144. 二叉树的前序遍历
  8. Elasticsearch java客户端调用cat服务
  9. Apache Hadoop YARN – ResourceManager--转载
  10. True Zero Downtime HAProxy Reloads--转载