python 怎么让列表里的数从大到小排列_Python实现把列表里的数字按从小到大的顺序排列...
一、自己造轮子
第一种方式的思路:
拿出列表里的第0个元素,把它赋给一个叫做“最小值”的变量,然后用这个变量去跟后面的每个数字一一对比,如果碰到比它小的,就把那个新发现的小数字赋给“最小值”变量,否则维持原状。
这样一轮下来,就能找到当前这些数字里的最小值,也就是应该在升序的列表中排在队首的元素。而这一轮当中,我们进行了“”元素总个数-1”次比较。紧接着,把这个最小的元素从原列表中删除。再用同样的方法,找出剩下的数字里最小的。
列表里一共有10个数字的话,上述过程就应该重复9次。因为只剩下一个元素的时候就不需要比较了,它自然是最大的,排在队尾。
这种排序方法叫做“选择排序”。算法的复杂度是O(n²)。
lst=[2,56,4,9,17,30,7,8,24,1]
order=[]
for j in range(10,1,-1):
#j代表列表里当前的元素个数
smallest=lst[0]
for i in range(1,j):
#i代表元素的索引,也就是拿第0个元素和列表里的第1个比较,第2个比较,一直比到第j-1个,完成一轮
if smallest<=lst[i]:
pass
else:
smallest=lst[i]
lst.remove(smallest)
#从原列表中移除已经确认的当前最小元素
order.append(smallest)
#把这个当前最小元素追加到升序列表中
order.append(lst[0])
#列表里最后剩下的那个元素追加到队尾
print(order)
第二种方式的思路:
我们从列表中找到一个数字作为基准,然后去查看其它数字,比它小的放到一个新列表里,并把这个新列表放到基准数字的左边,比它大的数字放到另外一个列表里,并把这个装满大数字的列表放到基准数字的右边。一种非常理想的情况是,小数字列表里的元素本身就已经按照升序排好了,大数字列表里的元素也本身就按照升序排好了,那我们只要把小数字列表、基准数字、大数字列表拼接到一起就完成了全部数字的排序。而这个理想情况也是需要我们自己去实现的。我们要不断重复找基准数字、把其他数字分为小数字阵营和大数字阵营的工作,直到什么时候结束呢?直到最后切分出来的小数字/大数字列表里只有一个元素或一个元素都没有就可以停止了。
现在我们有了基线条件,还有了需要不断重复的工作。一个词呼之欲出——递归!
其实这种排序方式就是“快速排序”。算法的复杂度是O(n log n)
def quicksort(arr):
'''快速排序函数'''
if len(arr)<2:
return arr
#上面是描述基线条件的部分,当列表里的元素不足两个时,直接原样返回
else:
pivot=arr[0]
#把列表开头的元素当做基准数字
less=[]
greater=[]
#上面创建了用于存放小于基准数字和大于基准数字的元素的空列表
for i in arr[1:]:
if i<=pivot:
less.append(i)
else:
greater.append(i)
#上面是遍历列表里除掉基准数字以外的数字,按照我们的规定分别存放到两个列表里
return quicksort(less)+[pivot]+quicksort(greater)
#返回的就是我们需要的顺序,这里记得要把基准数字放到一个单独的列表里,否则拼接会失败
print(quicksort([23,9,55,33,24,15]))
#随便找个无序列表试一试我们的函数好不好用
二、用前人造好的轮子
lst=[2,56,4,9,17,30,7,8,24,1]
lst.sort()
#sort是列表的一个方法,默认会把列表里的数字按照升序排列
print(lst)
*********************************************************************************************************************
如果这篇博文帮到了你,就请给我点个赞吧(#^.^#)
有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙
python 怎么让列表里的数从大到小排列_Python实现把列表里的数字按从小到大的顺序排列...相关推荐
- python 怎么让列表里的数从大到小排列,python中如何给列表排序
这篇文章主要介绍了Python中对列表排序实例,需要的朋友可以参考下 很多时候,我们需要对List进行排序,Python提供了两个方法,对给定的List L进行排序: 方法1.用List的成员函数so ...
- python数字从大到小排列_Python练习题 005:三个数字由大到小排序输出
[Python练习题 005]输入三个整数x,y,z,请把这三个数由小到大输出. ----------------------------------------------------------- ...
- 在python中输入10个整数并求出最大值_python练习题 :用户任意输入10个整数到列表中,然后由大到小排列并输出。...
一:填空题: 1.python是一种面向_对象 __的高级语言. 2.python可以在多种平台运行,这体现了python的___可移植___特性. 3.python源代码被解释器转换后的格式为___ ...
- python一组数字按大到小输出_Python练习题 005:三个数字由大到小排序输出
[Python练习题 005]输入三个整数x,y,z,请把这三个数由小到大输出. ----------------------------------------------------------- ...
- python range从大到小排列_python 十大经典排序算法
人生苦短,我用python! 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序 ...
- 【python】输出30以内的质数并输出、统计个数、以及从大到小排列。
[python]输出30以内的质数并输出.统计个数.以及从大到小排列. 创建一个空列表 first_list = [] 寻找30以内的质数 for i in range(2, 30): for j i ...
- python从大到小排序_python作业:用嵌套的列表存储学生成绩数据,并编程完成如下操作...
用嵌套的列表存储学生成绩数据,并编程完成如下操作: 学号 姓名 英语 数学 计算机 1903001 李孟亚 78 89 90 1903002 张钟英 51 89 56 ...
- java怎么从大到小排序元祖_列表、元祖的操作
列表里面可以放对象,list用[ ] 表示,里面的对象用逗号隔开,里面的对象是有顺序的,列表有索引,可以进行切片,切片后产生新的列表. 列表的操作: 1.增 1.1append("xxx&q ...
- c语言自动输入0到1000,c语言实现输入一组数自动从大到小排列
#include main() { int x; printf("请输入要排序数字个数:"); scanf("%d",&x); int i,j,k,a, ...
最新文章
- Typescript + TSLint + webpack 搭建 Typescript 的开发环境
- [Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解
- mysql adminer 导入csv_mysql导入csv的4种报错的解决方法
- 现在女生的床真的都是这样吗?
- html action能跨域么,ASP.NET MVC 中设置跨域
- springcloud灰度发布实现方案
- python学了基础之后方向_学习了解python基础后,该进去哪一个方向呢?
- knife4j--api请求参数不一致问题
- scala 基础类库 —— 文件操作
- 陈强教授 计量经济学及机器学习等数据集、程序等相关资源
- 项目管理知识体系指南(五)项目时间管理
- 泰迪云课堂大数据培训平台业务介绍
- 【VOLTE】VOLTE的注册和去注册过程
- android软件版本升级时,安装新版本后,没有出现安装成功界面或直接回到桌面
- arthas离线包使用说明
- android 仿QQ登陆界面实现
- GL.iNet MT1300全千兆mini智能路由 拆解测评 刷机路由器 智能路由器 随身路由器 旅行路由器
- 【格式化文档】ISO 27001控制措施+ISO27002实施指南 【下】
- 管理案例:一个日本小老板的工作记录
- CSDN 专栏的创建与管理
热门文章
- pygame实现飞机大战游戏
- eNSP AR1启动失败的解决办法
- mc服务器plotme修改,我的世界op地皮指令大全 不会plotme命令的可以参考
- 魅族android N内测视频,魅族安卓N内测推送计划:分三批推送!
- Dashed lines generator for 3dMax 虚线生成器插件使用教程
- 苹果APP提交加急审核
- ubuntu将ntfs格式分区转成ext4格式分区
- Android 8.1共享系统代理中的热点(LineageOS15.1)
- 检测服务器是否开启重协商功能(用于CVE-2011-1473漏洞检测)
- 如何制作抖音照片图集 照片视频怎么制作