一、自己造轮子

第一种方式的思路:

拿出列表里的第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实现把列表里的数字按从小到大的顺序排列...相关推荐

  1. python 怎么让列表里的数从大到小排列,python中如何给列表排序

    这篇文章主要介绍了Python中对列表排序实例,需要的朋友可以参考下 很多时候,我们需要对List进行排序,Python提供了两个方法,对给定的List L进行排序: 方法1.用List的成员函数so ...

  2. python数字从大到小排列_Python练习题 005:三个数字由大到小排序输出

    [Python练习题 005]输入三个整数x,y,z,请把这三个数由小到大输出. ----------------------------------------------------------- ...

  3. 在python中输入10个整数并求出最大值_python练习题 :用户任意输入10个整数到列表中,然后由大到小排列并输出。...

    一:填空题: 1.python是一种面向_对象 __的高级语言. 2.python可以在多种平台运行,这体现了python的___可移植___特性. 3.python源代码被解释器转换后的格式为___ ...

  4. python一组数字按大到小输出_Python练习题 005:三个数字由大到小排序输出

    [Python练习题 005]输入三个整数x,y,z,请把这三个数由小到大输出. ----------------------------------------------------------- ...

  5. python range从大到小排列_python 十大经典排序算法

    人生苦短,我用python! 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序 ...

  6. 【python】输出30以内的质数并输出、统计个数、以及从大到小排列。

    [python]输出30以内的质数并输出.统计个数.以及从大到小排列. 创建一个空列表 first_list = [] 寻找30以内的质数 for i in range(2, 30): for j i ...

  7. python从大到小排序_python作业:用嵌套的列表存储学生成绩数据,并编程完成如下操作...

    用嵌套的列表存储学生成绩数据,并编程完成如下操作:  学号   姓名   英语 数学 计算机 1903001 李孟亚 78    89    90 1903002 张钟英 51    89    56 ...

  8. java怎么从大到小排序元祖_列表、元祖的操作

    列表里面可以放对象,list用[ ] 表示,里面的对象用逗号隔开,里面的对象是有顺序的,列表有索引,可以进行切片,切片后产生新的列表. 列表的操作: 1.增 1.1append("xxx&q ...

  9. c语言自动输入0到1000,c语言实现输入一组数自动从大到小排列

    #include main() { int x; printf("请输入要排序数字个数:"); scanf("%d",&x); int i,j,k,a, ...

最新文章

  1. Typescript + TSLint + webpack 搭建 Typescript 的开发环境
  2. [Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解
  3. mysql adminer 导入csv_mysql导入csv的4种报错的解决方法
  4. 现在女生的床真的都是这样吗?
  5. html action能跨域么,ASP.NET MVC 中设置跨域
  6. springcloud灰度发布实现方案
  7. python学了基础之后方向_学习了解python基础后,该进去哪一个方向呢?
  8. knife4j--api请求参数不一致问题
  9. scala 基础类库 —— 文件操作
  10. 陈强教授 计量经济学及机器学习等数据集、程序等相关资源
  11. 项目管理知识体系指南(五)项目时间管理
  12. 泰迪云课堂大数据培训平台业务介绍
  13. 【VOLTE】VOLTE的注册和去注册过程
  14. android软件版本升级时,安装新版本后,没有出现安装成功界面或直接回到桌面
  15. arthas离线包使用说明
  16. android 仿QQ登陆界面实现
  17. GL.iNet MT1300全千兆mini智能路由 拆解测评 刷机路由器 智能路由器 随身路由器 旅行路由器
  18. 【格式化文档】ISO 27001控制措施+ISO27002实施指南 【下】
  19. 管理案例:一个日本小老板的工作记录
  20. CSDN 专栏的创建与管理

热门文章

  1. pygame实现飞机大战游戏
  2. eNSP AR1启动失败的解决办法
  3. mc服务器plotme修改,我的世界op地皮指令大全 不会plotme命令的可以参考
  4. 魅族android N内测视频,魅族安卓N内测推送计划:分三批推送!
  5. Dashed lines generator for 3dMax 虚线生成器插件使用教程
  6. 苹果APP提交加急审核
  7. ubuntu将ntfs格式分区转成ext4格式分区
  8. Android 8.1共享系统代理中的热点(LineageOS15.1)
  9. 检测服务器是否开启重协商功能(用于CVE-2011-1473漏洞检测)
  10. 如何制作抖音照片图集 照片视频怎么制作