Python编程之数据结构与算法练习_004
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相关推荐
- Python–cookbook–1.数据结构与算法
Python–cookbook–1.数据结构与算法 文章目录 Python–cookbook–1.数据结构与算法 解压序列赋值给多个变量 解压可迭代对象赋值给多个变量 文件对比,对比当前行和之前行 查 ...
- 数据结构与算法python描述_数据结构与算法——Python语言描述.pdf
数据结构与算法--Python语言描述.pdf 欢迎加入非盈利Python编学习交流程QQ群783462347,群里免费提供500+本Python书籍! 欢迎加入非盈利Python编程学习交流程QQ群 ...
- python define graph_Python数据结构与算法之图结构(Graph)实例分析
本文实例讲述了Python数据结构与算法之图结构(Graph).分享给大家供大家参考,具体如下: 图结构(Graph)--算法学中最强大的框架之一.树结构只是图的一种特殊情况. 如果我们可将自己的工作 ...
- Python实战之数据结构和算法
写在前面 博文为<Python Cookbook>读书笔记整理 读了这本书,才发现Python数据处理远比我想的要强大 理解不足小伙伴帮忙指正 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去, ...
- Python编程实现粒子群算法(PSO)详解
1 原理 粒子群算法是群智能一种,是基于对鸟群觅食行为的研究和模拟而来的.假设在鸟群觅食范围,只在一个地方有食物,所有鸟儿看不到食物(不知道食物的具体位置),但是能闻到食物的味道(能知道食物距离自己位 ...
- python 栈_Python数据结构与算法05:基本结构:栈的应用之括号匹配
注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为7分钟. 算法流程 括号匹配情况介绍 我们经常会遇到类似(9-1)*(8+7)/(4-2).print(& ...
- python实现队列_用Python实现的数据结构与算法:队列
一.概述 队列(Queue)是一种先进先出(FIFO)的线性数据结构,插入操作在队尾(rear)进行,删除操作在队首(front)进行. 二.ADT 队列ADT(抽象数据类型)一般提供以下接口: Qu ...
- Python编程实现用KNN算法对红酒分类功能
一.任务要求 导入红酒数据集(load_wine),编写Python代码,完成以下任务: 1.实现计算平均酒精含量的功能: 2.实现对数据的标准化: 3.使用kNN算法实现红酒分类功能 二.代码实现 ...
- python 下的数据结构与算法---6:6大排序算法
顶先最后推荐:哈哈,意思是放到顶部强调其重要性,但是应该我总结的六种算法看完了后再看的一篇醍醐灌顶的文章 一:冒泡排序(Bubble Sort) 原理:假设有n个数,第一轮时:从第一个元素开始,与相邻 ...
最新文章
- javascript的date对象
- ECCV2020优秀论文汇总|涉及点云处理、3D检测识别、三维重建、立体视觉、姿态估计、深度估计、SFM等方向...
- mysql len s.number,mysql内置函数
- MySQL优化 之 Discuz论坛优化
- 最后一个单词的长度Python解法
- php 正则获取html标签,php正则取嵌套html标签
- 计算机图形学用到哪些概率知识,图形学所需的数学知识
- SSM期末复习题(仅供参考)
- 【PFC】PFC设置 H3C交换机设置和主机设置--编辑中
- Maya火球特效制作
- java的duplicate用法_Java FloatBuffer duplicate()用法及代码示例
- python卷积神经网络预测股价_解读:一种基于CNN-LSTM混合神经网络的股价预测模型...
- 奶爸日记21 - 探险乐园
- Chat Top10 | 实战:参考牛顿冷却定律优化最热问题的排序
- 同比与环比——财务小知识点
- Win10无法升级Win11体验版解决方法
- Istio-智能DNS
- 找技术公司开发小程序需要注意些什么?
- 单位dbm db的关系与区别
- 凯哥自媒体:怎样用今日头条自媒体赚钱?