|
邀请回答
马上注册,享受更多特权
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本贴通过实现冒泡排序法的例子来演示python创建函数、调用函数以及通过命令行传入参数。
- 排序原理:冒泡排序法是通过不停的比较数组中连续的两个数字的大来进行排序的,将较大的数字移动到后面。
- 排序方法:依次对第(1,2),(2,3),(3,4)个数字进行比较,通过比较结果将较大的数字调整到后面。
- 第一轮比较能将最大的数字移动到最后一位;
- 第二轮比较能将第二大的数字移动到倒数第二位;
- 第三轮比较能将第三大的数字移动到倒数第三位;
- …………
以此类推,针对长度为n的数组,完全排序需要n-1轮排序,每一轮排序需要进行n-1次比较。
首先建立一个生成随机数的程序:random_list.py
- #-*- coding:utf-8 -*-
- # Created Date: 2020/03/10
- import random
- def random_list(n):
- """返回一个长度为n的随机数列表,数值为[0,1000)"""
- print("Input number is :{}\n".format(n))
- iList = []
- for num in range(n):
- iList.append(random.randrange(1000))
- return iList
-
- if __name__ == "__main__":
- iList = random_list(10)
- print(iList)
复制代码
然后建立冒泡排序的程序:bubble_sort.py
- #-*- coding:utf-8 -*-
- # Created Date:2020/03/10
- from random_list import random_list
- import timeit
- import sys
- # 调用sys库argv函数从外部传入参数
- tt_num = sys.argv[1]
- print("\nTotal number is :{}\n".format(tt_num))
- # 调用从random_list程序中导入的random_list函数
- iList = random_list(int(tt_num))
- def bubble_sort(iList):
- """定义冒泡排序的函数"""
- if len(iList) <= 1:
- return iList
- for i in range(1, len(iList)):
- for j in range(0, len(iList)-1):
- if iList[j] >= iList[j + 1]:
- iList[j], iList[j+1] = iList[j+1], iList[j]
- # print("The {}th sort results is: {}".format(j, iList))
- return iList
-
- if __name__ == "__main__":
- print("the original datas are: {}".format(iList))
- print("the sorted results are: {}".format(bubble_sort(iList)))
- print(timeit.timeit("bubble_sort(iList)", "from __main__ import bubble_sort, iList", number = 100))
复制代码
保存两个python文件,在命令行中输入指令:python bubble_list.py 10
执行效果如下:
- Total number is :10
- Input number is :10
- the original datas are: [840, 71, 176, 442, 897, 421, 58, 196, 399, 214]
- the sorted results are: [58, 71, 176, 196, 214, 399, 421, 442, 840, 897]
- 0.0016825
复制代码
|
上一篇: 【python笔记】1.4numpy矩阵计算的几个常用函数下一篇: 【排序】快速排序法python实现
|