【Python】【算法】【排序】用Python实现排序的三种算法
- class SortTest:
- def __init__(self):
- pass
- # 冒泡排序
- def BubbleSort(self, value):
- if isinstance(value, list):
- print("This is a list")
- for i in range(len(value)):
- for j in range(i + 1, len(value)):
- if value[i] > value[j]:
- tmp = value[j]
- value[j] = value[i]
- value[i] = tmp
- print(value)
- else:
- print("This isn't list!")
- def ZenofPythonBubbleSort(self, value):
- if isinstance(value, list):
- for i in range(len(value)):
- for j in range(i + 1, len(value)):
- if value[i] > value[j]:
- value[i], value[j] = value[j], value[i]
- print(value)
- else:
- print("This isn't list!")
- # 选择排序
- def ChoiceSort(self, value):
- if isinstance(value, list):
- # 就是找最小/最大数的下标
- for i in range(len(value)):
- index = i
- for j in range(i, len(value)):
- if value[index] > value[j]:
- index = j
- value[i], value[index] = value[index], value[i]
- print(value)
- else:
- print("This isn't list!")
- # 插入排序
- def InsertSort(self, value):
- if isinstance(value, list):
- # 从未排过序的数中找到最大/最小的那个比较后插入到前排
- for i in range(1, len(value)):
- j = i - 1
- if value[i] < value[j]:
- temp = value[i]
- value[i] = value[j]
- j = j - 1
- while j >= 0 and value[j] > temp:
- value[j + 1] = value[j]
- j = j - 1
- value[j + 1] = temp
- print(value)
- def InsertSort2(self, value):
- if isinstance(value, list):
- for i in range(1, len(value)):
- j = i - 1
- if value[i] < value[j]:
- temp = value[i]
- value[i] = value[j]
- j = j - 1
- while j >= 0 and value[j] > temp:
- value[j + 1] = value[j]
- j = j - 1
- value[j + 1] = temp
- else:
- print("This isn't list!")
- if __name__ == '__main__':
- st = SortTest()
- test = [9, 8, 6, 5, 4, 3, 2, 1]
- value = [1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1]
- # st.ZenofPythonBubbleSort(test)
- # st.ChoiceSort(test)
- st.InsertSort(test)
【Python】【算法】【排序】用Python实现排序的三种算法的更多相关文章
- 缓存算法(FIFO 、LRU、LFU三种算法的区别)
FIFO算法 FIFO 算法是一种比较容易实现的算法.它的思想是先进先出(FIFO,队列),这是最简单.最公平的一种思想,即如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小.空间满的时 ...
- 排序—时间复杂度为O(n2)的三种排序算法
1 如何评价.分析一个排序算法? 很多语言.数据库都已经封装了关于排序算法的实现代码.所以我们学习排序算法目的更多的不是为了去实现这些代码,而是灵活的应用这些算法和解决更为复杂的问题,所以更重要的是学 ...
- 最短路问题的三种算法&模板
最短路算法&模板 最短路问题是图论的基础问题.本篇随笔就图论中最短路问题进行剖析,讲解常用的三种最短路算法:Floyd算法.Dijkstra算法及SPFA算法,并给出三种算法的模板.流畅阅读本 ...
- c语言求回文数的三种算法的描述
c语言求回文数的三种算法的描述 题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,8 ...
- Java利用DES/3DES/AES这三种算法分别实现对称加密
转载地址:http://blog.csdn.net/smartbetter/article/details/54017759 有两句话是这么说的: 1)算法和数据结构就是编程的一个重要部分,你若失掉了 ...
- 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝
第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...
- Python|读、写Excel文件(三种模块三种方式)
python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别: 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pandas进行excel读写: imp ...
- O(n*logn)级别的算法之二(快速排序)的三种实现方法详解及其与归并排序的对比
一,单路快排1.测试用例: #ifndef INC_06_QUICK_SORT_DEAL_WITH_NEARLY_ORDERED_ARRAY_SORTTESTHELPER_H #define INC_ ...
- 求最短路径的三种算法: Ford, Dijkstra和Floyd
Bellman-Ford算法 Bellman-Ford是一种容易理解的单源最短路径算法, Bellman-Ford算法需要两个数组进行辅助: dis[i]: 存储顶点i到源点已知最短路径 path[i ...
- 内存分配---FF、BF、WF三种算法
动态分区分配是根据进程的实际需要,动态的为之分配内存空间.而在实现可变分区分配时,将涉及到分区分配中 所用的数据结构.分区分配算法和分区的分配与内存回收的过程. 分区分配中的数据结构:(1)描述空闲块 ...
随机推荐
- 宇宙无敌搞笑轻松弄懂java动态代理
https://www.cnblogs.com/ferryman/p/13170057.html jdk动态代理和cglib动态代理区别 https://blog.csdn.net/shallynev ...
- java入门与进阶 P-2.5+P-2.6
嵌套和级联的判断 嵌套的判断 当if的条件满足或者不满足的时候要执行的语句也可以是一条if或if-else语句,这就是嵌套的if语句 else的匹配 else总是和最近的那个if匹配 tips 在if ...
- Windows静态库和动态库区别
个人建议:能使用静态库的就不要使用动态库,能使用隐式调用的就不要用显示调用. 注意: (1)动态库中的.lib文件叫做导入库,对于导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符 ...
- 从 Cloud-Native Relational DB 看数据库设计
论文内容:Amazon Aurora: Design Considerations for HighThroughput Cloud-Native Relational Databases 里面介绍了 ...
- 【KAWAKO】TVM-使用c++进行推理
目录 前言 修改cpp_deploy.cc文件 修改DeployGraphExecutor()函数 numpy与bin文件的互相转换 numpy转bin bin转numpy 使用CMakeLists. ...
- ps抠图小技巧
1.背景橡皮擦工具 适合分离单一背景. 中括号键可以调整大小. 2.调整边缘抠图(也叫选择并遮住) 适合扣毛发丝. 套索工具框选出大概: 点击选择并遮住后出来一个面板: 视图选择叠加,输出设置勾上净化 ...
- jenkins简单安装及配置(Windows环境
jenkins简单安装及配置(Windows环境) jenkins是一款跨平台的持续集成和持续交付.基于Java开发的开源软件,提供任务构建.持续集成监控的功能,可以使开发测试人员更方便的构建软件项目 ...
- P3387 缩点
\(Tarjan\) 模板 #include<cstdio> #include<queue> #include<iostream> #define re regis ...
- HashTable HashMap concurrentHashMap区别
HashTable HashMap concurrentHashMap区别 HashMap.HashTable.ConcurrentHashMap都是map接口的实现类 1.(同步性)HashTabl ...
- Cobalt Strike 之:提权
郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全人人有责,共同维护网络文明和谐. Co ...