1. class SortTest:
  2.  
  3. def __init__(self):
  4. pass
  5.  
  6. # 冒泡排序
  7. def BubbleSort(self, value):
  8. if isinstance(value, list):
  9. print("This is a list")
  10. for i in range(len(value)):
  11. for j in range(i + 1, len(value)):
  12. if value[i] > value[j]:
  13. tmp = value[j]
  14. value[j] = value[i]
  15. value[i] = tmp
  16. print(value)
  17. else:
  18. print("This isn't list!")
  19.  
  20. def ZenofPythonBubbleSort(self, value):
  21. if isinstance(value, list):
  22. for i in range(len(value)):
  23. for j in range(i + 1, len(value)):
  24. if value[i] > value[j]:
  25. value[i], value[j] = value[j], value[i]
  26. print(value)
  27. else:
  28. print("This isn't list!")
  29.  
  30. # 选择排序
  31. def ChoiceSort(self, value):
  32. if isinstance(value, list):
  33. # 就是找最小/最大数的下标
  34.  
  35. for i in range(len(value)):
  36. index = i
  37. for j in range(i, len(value)):
  38. if value[index] > value[j]:
  39. index = j
  40. value[i], value[index] = value[index], value[i]
  41. print(value)
  42. else:
  43. print("This isn't list!")
  44.  
  45. # 插入排序
  46. def InsertSort(self, value):
  47. if isinstance(value, list):
  48. # 从未排过序的数中找到最大/最小的那个比较后插入到前排
  49. for i in range(1, len(value)):
  50. j = i - 1
  51. if value[i] < value[j]:
  52. temp = value[i]
  53. value[i] = value[j]
  54.  
  55. j = j - 1
  56. while j >= 0 and value[j] > temp:
  57. value[j + 1] = value[j]
  58. j = j - 1
  59.  
  60. value[j + 1] = temp
  61.  
  62. print(value)
  63.  
  64. def InsertSort2(self, value):
  65. if isinstance(value, list):
  66. for i in range(1, len(value)):
  67. j = i - 1
  68. if value[i] < value[j]:
  69. temp = value[i]
  70. value[i] = value[j]
  71.  
  72. j = j - 1
  73. while j >= 0 and value[j] > temp:
  74. value[j + 1] = value[j]
  75. j = j - 1
  76. value[j + 1] = temp
  77.  
  78. else:
  79. print("This isn't list!")
  80.  
  81. if __name__ == '__main__':
  82. st = SortTest()
  83. test = [9, 8, 6, 5, 4, 3, 2, 1]
  84. value = [1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1]
  85. # st.ZenofPythonBubbleSort(test)
  86. # st.ChoiceSort(test)
  87. st.InsertSort(test)

【Python】【算法】【排序】用Python实现排序的三种算法的更多相关文章

  1. 缓存算法(FIFO 、LRU、LFU三种算法的区别)

    FIFO算法 FIFO 算法是一种比较容易实现的算法.它的思想是先进先出(FIFO,队列),这是最简单.最公平的一种思想,即如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小.空间满的时 ...

  2. 排序—时间复杂度为O(n2)的三种排序算法

    1 如何评价.分析一个排序算法? 很多语言.数据库都已经封装了关于排序算法的实现代码.所以我们学习排序算法目的更多的不是为了去实现这些代码,而是灵活的应用这些算法和解决更为复杂的问题,所以更重要的是学 ...

  3. 最短路问题的三种算法&模板

    最短路算法&模板 最短路问题是图论的基础问题.本篇随笔就图论中最短路问题进行剖析,讲解常用的三种最短路算法:Floyd算法.Dijkstra算法及SPFA算法,并给出三种算法的模板.流畅阅读本 ...

  4. c语言求回文数的三种算法的描述

    c语言求回文数的三种算法的描述 题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,8 ...

  5. Java利用DES/3DES/AES这三种算法分别实现对称加密

    转载地址:http://blog.csdn.net/smartbetter/article/details/54017759 有两句话是这么说的: 1)算法和数据结构就是编程的一个重要部分,你若失掉了 ...

  6. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  7. Python|读、写Excel文件(三种模块三种方式)

    python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别: 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pandas进行excel读写: imp ...

  8. O(n*logn)级别的算法之二(快速排序)的三种实现方法详解及其与归并排序的对比

    一,单路快排1.测试用例: #ifndef INC_06_QUICK_SORT_DEAL_WITH_NEARLY_ORDERED_ARRAY_SORTTESTHELPER_H #define INC_ ...

  9. 求最短路径的三种算法: Ford, Dijkstra和Floyd

    Bellman-Ford算法 Bellman-Ford是一种容易理解的单源最短路径算法, Bellman-Ford算法需要两个数组进行辅助: dis[i]: 存储顶点i到源点已知最短路径 path[i ...

  10. 内存分配---FF、BF、WF三种算法

    动态分区分配是根据进程的实际需要,动态的为之分配内存空间.而在实现可变分区分配时,将涉及到分区分配中 所用的数据结构.分区分配算法和分区的分配与内存回收的过程. 分区分配中的数据结构:(1)描述空闲块 ...

随机推荐

  1. 宇宙无敌搞笑轻松弄懂java动态代理

    https://www.cnblogs.com/ferryman/p/13170057.html jdk动态代理和cglib动态代理区别 https://blog.csdn.net/shallynev ...

  2. java入门与进阶 P-2.5+P-2.6

    嵌套和级联的判断 嵌套的判断 当if的条件满足或者不满足的时候要执行的语句也可以是一条if或if-else语句,这就是嵌套的if语句 else的匹配 else总是和最近的那个if匹配 tips 在if ...

  3. Windows静态库和动态库区别

    个人建议:能使用静态库的就不要使用动态库,能使用隐式调用的就不要用显示调用. 注意:     (1)动态库中的.lib文件叫做导入库,对于导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符 ...

  4. 从 Cloud-Native Relational DB 看数据库设计

    论文内容:Amazon Aurora: Design Considerations for HighThroughput Cloud-Native Relational Databases 里面介绍了 ...

  5. 【KAWAKO】TVM-使用c++进行推理

    目录 前言 修改cpp_deploy.cc文件 修改DeployGraphExecutor()函数 numpy与bin文件的互相转换 numpy转bin bin转numpy 使用CMakeLists. ...

  6. ps抠图小技巧

    1.背景橡皮擦工具 适合分离单一背景. 中括号键可以调整大小. 2.调整边缘抠图(也叫选择并遮住) 适合扣毛发丝. 套索工具框选出大概: 点击选择并遮住后出来一个面板: 视图选择叠加,输出设置勾上净化 ...

  7. jenkins简单安装及配置(Windows环境

    jenkins简单安装及配置(Windows环境) jenkins是一款跨平台的持续集成和持续交付.基于Java开发的开源软件,提供任务构建.持续集成监控的功能,可以使开发测试人员更方便的构建软件项目 ...

  8. P3387 缩点

    \(Tarjan\) 模板 #include<cstdio> #include<queue> #include<iostream> #define re regis ...

  9. HashTable HashMap concurrentHashMap区别

    HashTable HashMap concurrentHashMap区别 HashMap.HashTable.ConcurrentHashMap都是map接口的实现类 1.(同步性)HashTabl ...

  10. Cobalt Strike 之:提权

    郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全人人有责,共同维护网络文明和谐. Co ...