Some排序算法的Python实现。不废话写原理,直接撸代码。

1.Bubble sort 冒泡排序

import random
import copymaxSize = 10000
maxValue = 10000#Generate random data
array=[0]*maxSize
for i in range(maxSize):array[i] = random.randint(10,maxValue)#Correct method
originalArray = copy.deepcopy(array)
testArray = copy.deepcopy(array)
testArray.sort()#Bubble sort
swaped = False
for i in range(maxSize):swaped = Falsefor j in range(0, maxSize - i - 1):if array[j] > array[j+1]:array[j], array[j+1] = array[j+1], array[j]swaped = Trueif not swaped:break
#Compare
for i in range(maxSize):if testArray[i] != array[i]:print("Fucked.")print(originalArray)break
else:print("Success.")

2.Insertion sort 插入排序

#插入排序
import random
import copymaxSize = 10000
maxValue = 10000#Generate random data
array=[0]*maxSize
for i in range(maxSize):array[i] = random.randint(10,maxValue)
#Correct method
testArray = copy.deepcopy(array)
testArray.sort()#Insertion sort
for i in range(1, maxSize):for j in range(i, 0, -1):if array[j] <= array[j-1]:array[j],array[j-1] = array[j-1],array[j]else:break
#Compare
for i in range(maxSize):if testArray[i] != array[i]:print("Fucked.")print("Fucked sample:{}".format(lst))break
else:print("Success.")

3.Quick sort 快速排序

def Partition(lst, left,right):partValue = lst[right]leftIndex = left - 1curIndex = leftrightIndex = rightwhile curIndex < rightIndex:if lst[curIndex] < partValue :leftIndex += 1        lst[curIndex], lst[leftIndex] = lst[leftIndex], lst[curIndex]curIndex += 1elif lst[curIndex] > partValue:rightIndex -= 1lst[curIndex], lst[rightIndex] = lst[rightIndex], lst[curIndex]else:curIndex += 1else:lst[rightIndex], lst[right] = lst[right], lst[rightIndex] #将用来划分的值交换至最终位置return [leftIndex ,rightIndex+1 ]def QuickSort(lst, left, right):if left < right :lstTmp = Partition(lst,left,right)QuickSort(lst, left, lstTmp[0])QuickSort(lst, lstTmp[1], right)# Test
def Compare(lstX, lstY):for i in range(len(lstX)):if lstX[i] != lstY[i]:return Falseelse:return TruemaxRound = 10000
maxValue = 1000
arrLength = 10000
for i in range(maxRound):lst = [random.randint(-maxValue,maxValue) for i in range(arrLength)]   lstCopy = copy.deepcopy(lst)QuickSort(lst, 0, len(lst) - 1)correctResult = sorted(lstCopy)if not Compare(correctResult, lst):print("Fucked.")print("Fucked sample:{}".format(lst))break
else:print("Success.")

4.Merge sort 归并排序

#归并排序import randomdef merge(lst, left, middle, right):leftIndex = leftrightIndex = middle+1lstHelp = []while leftIndex <= middle and rightIndex <= right:if lst[leftIndex] <= lst[rightIndex]:lstHelp.append(lst[leftIndex])leftIndex += 1else:lstHelp.append(lst[rightIndex])rightIndex += 1while leftIndex <= middle:lstHelp.append(lst[leftIndex])leftIndex += 1while rightIndex <= right:lstHelp.append(lst[rightIndex])rightIndex += 1for i in range(len(lstHelp)):lst[left+i] = lstHelp[i]def MergeSort(lst, left, right):if left == right:returnmiddle = left + ((right - left)>>1)MergeSort(lst, left, middle,)MergeSort(lst, middle+1, right)merge(lst, left, middle, right)# Test
def Compare(lstX, lstY):for i in range(len(lstX)):if lstX[i] != lstY[i]:return Falseelse:return TruemaxRound = 10000
maxValue = 1000
arrLength = 1000
for i in range(maxRound):lst = [random.randint(-maxValue,maxValue) for _ in range(arrLength)]   lstCopy = copy.deepcopy(lst)MergeSort(lst, 0, len(lst) - 1)correctResult = sorted(lstCopy)if not Compare(correctResult, lst):print("Fucked.")print("Fucked sample:{}".format(lst))break
else:print("Success.")

转载于:https://www.cnblogs.com/orcsir/p/8762906.html

Python编程之数据结构与算法练习_004相关推荐

  1. Python–cookbook–1.数据结构与算法

    Python–cookbook–1.数据结构与算法 文章目录 Python–cookbook–1.数据结构与算法 解压序列赋值给多个变量 解压可迭代对象赋值给多个变量 文件对比,对比当前行和之前行 查 ...

  2. 数据结构与算法python描述_数据结构与算法——Python语言描述.pdf

    数据结构与算法--Python语言描述.pdf 欢迎加入非盈利Python编学习交流程QQ群783462347,群里免费提供500+本Python书籍! 欢迎加入非盈利Python编程学习交流程QQ群 ...

  3. python define graph_Python数据结构与算法之图结构(Graph)实例分析

    本文实例讲述了Python数据结构与算法之图结构(Graph).分享给大家供大家参考,具体如下: 图结构(Graph)--算法学中最强大的框架之一.树结构只是图的一种特殊情况. 如果我们可将自己的工作 ...

  4. Python实战之数据结构和算法

    写在前面 博文为<Python Cookbook>读书笔记整理 读了这本书,才发现Python数据处理远比我想的要强大 理解不足小伙伴帮忙指正 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去, ...

  5. Python编程实现粒子群算法(PSO)详解

    1 原理 粒子群算法是群智能一种,是基于对鸟群觅食行为的研究和模拟而来的.假设在鸟群觅食范围,只在一个地方有食物,所有鸟儿看不到食物(不知道食物的具体位置),但是能闻到食物的味道(能知道食物距离自己位 ...

  6. python 栈_Python数据结构与算法05:基本结构:栈的应用之括号匹配

    注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为7分钟. 算法流程 括号匹配情况介绍 我们经常会遇到类似(9-1)*(8+7)/(4-2).print(& ...

  7. python实现队列_用Python实现的数据结构与算法:队列

    一.概述 队列(Queue)是一种先进先出(FIFO)的线性数据结构,插入操作在队尾(rear)进行,删除操作在队首(front)进行. 二.ADT 队列ADT(抽象数据类型)一般提供以下接口: Qu ...

  8. Python编程实现用KNN算法对红酒分类功能

    一.任务要求 导入红酒数据集(load_wine),编写Python代码,完成以下任务: 1.实现计算平均酒精含量的功能: 2.实现对数据的标准化: 3.使用kNN算法实现红酒分类功能 二.代码实现 ...

  9. python 下的数据结构与算法---6:6大排序算法

    顶先最后推荐:哈哈,意思是放到顶部强调其重要性,但是应该我总结的六种算法看完了后再看的一篇醍醐灌顶的文章 一:冒泡排序(Bubble Sort) 原理:假设有n个数,第一轮时:从第一个元素开始,与相邻 ...

最新文章

  1. javascript的date对象
  2. ECCV2020优秀论文汇总|涉及点云处理、3D检测识别、三维重建、立体视觉、姿态估计、深度估计、SFM等方向...
  3. mysql len s.number,mysql内置函数
  4. MySQL优化 之 Discuz论坛优化
  5. 最后一个单词的长度Python解法
  6. php 正则获取html标签,php正则取嵌套html标签
  7. 计算机图形学用到哪些概率知识,图形学所需的数学知识
  8. SSM期末复习题(仅供参考)
  9. 【PFC】PFC设置 H3C交换机设置和主机设置--编辑中
  10. Maya火球特效制作
  11. java的duplicate用法_Java FloatBuffer duplicate()用法及代码示例
  12. python卷积神经网络预测股价_解读:一种基于CNN-LSTM混合神经网络的股价预测模型...
  13. 奶爸日记21 - 探险乐园
  14. Chat Top10 | 实战:参考牛顿冷却定律优化最热问题的排序
  15. 同比与环比——财务小知识点
  16. Win10无法升级Win11体验版解决方法
  17. Istio-智能DNS
  18. 找技术公司开发小程序需要注意些什么?
  19. 单位dbm db的关系与区别
  20. 凯哥自媒体:怎样用今日头条自媒体赚钱?

热门文章

  1. PKM(个人知识管理)类软件收集(偶尔更新列表)
  2. flask上传excel文件,无须存储,直接读取内容
  3. android自定义view(自定义数字键盘)
  4. Node.js 使用jQuery取得Nodejs http服务端返回的JSON对象示例
  5. [LeetCode]Basic Calculator
  6. hive求差集和交集
  7. Linux 终端下 dstat 监控工具
  8. 在JS函数中执行C#中的函数、字段
  9. 三个监控linux网卡流量脚本
  10. (转)告别程序员生涯,一点感慨,与诸君共勉