查看: 1672|回复: 2
收起左侧

[资料分享] 【排序】冒泡排序法python实现

Lihoon 2020-3-12 11:20:22 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
本贴通过实现冒泡排序法的例子来演示python创建函数、调用函数以及通过命令行传入参数。
  • 排序原理:冒泡排序法是通过不停的比较数组中连续的两个数字的大来进行排序的,将较大的数字移动到后面。
  • 排序方法:依次对第(1,2),(2,3),(3,4)个数字进行比较,通过比较结果将较大的数字调整到后面。


  • 第一轮比较能将最大的数字移动到最后一位;
  • 第二轮比较能将第二大的数字移动到倒数第二位;
  • 第三轮比较能将第三大的数字移动到倒数第三位;
  • …………


以此类推,针对长度为n的数组,完全排序需要n-1轮排序,每一轮排序需要进行n-1次比较。
  • python代码实现

首先建立一个生成随机数的程序:random_list.py
  1. #-*- coding:utf-8 -*-
  2. # Created Date: 2020/03/10

  3. import random

  4. def random_list(n):
  5.         """返回一个长度为n的随机数列表,数值为[0,1000)"""
  6.         print("Input number is :{}\n".format(n))
  7.         iList = []
  8.         for num in range(n):
  9.                 iList.append(random.randrange(1000))
  10.         return iList
  11.        
  12. if __name__ == "__main__":
  13.         iList = random_list(10)
  14.         print(iList)
复制代码

然后建立冒泡排序的程序:bubble_sort.py
  1. #-*- coding:utf-8 -*-
  2. # Created Date:2020/03/10

  3. from random_list import random_list
  4. import timeit
  5. import sys

  6. # 调用sys库argv函数从外部传入参数
  7. tt_num = sys.argv[1]       
  8. print("\nTotal number is :{}\n".format(tt_num))

  9. # 调用从random_list程序中导入的random_list函数
  10. iList = random_list(int(tt_num))

  11. def bubble_sort(iList):
  12.         """定义冒泡排序的函数"""
  13.         if len(iList) <= 1:
  14.                 return iList
  15.         for i in range(1, len(iList)):
  16.                 for j in range(0, len(iList)-1):
  17.                         if iList[j] >= iList[j + 1]:
  18.                                 iList[j], iList[j+1] = iList[j+1], iList[j]
  19.                 # print("The {}th sort results is: {}".format(j, iList))
  20.         return iList
  21.        
  22. if __name__ == "__main__":
  23.         print("the original datas are: {}".format(iList))
  24.         print("the sorted results are: {}".format(bubble_sort(iList)))
  25.         print(timeit.timeit("bubble_sort(iList)", "from __main__ import bubble_sort, iList", number = 100))
复制代码


保存两个python文件,在命令行中输入指令:python bubble_list.py 10
执行效果如下:
  1. Total number is :10
  2. Input number is :10
  3. the original datas are: [840, 71, 176, 442, 897, 421, 58, 196, 399, 214]
  4. the sorted results are: [58, 71, 176, 196, 214, 399, 421, 442, 840, 897]
  5. 0.0016825
复制代码





上一篇:【python笔记】1.4numpy矩阵计算的几个常用函数
下一篇:【排序】快速排序法python实现

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部