| 站长开始收学徒,辅导python啦! | 站长答疑 | 本站每日ip已超7000,现出租广告位,位置价格可谈,需要合作请联系站长
+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-08(96)

2019-09(100)

2019-10(16)

2019-11(10)

2019-12(12)

2020-01(28)

2020-02(31)

2020-03(81)

冒泡排序、选择排序、插入排序

发布于2020-03-26 11:01     阅读(42)     评论(0)     点赞(14)     收藏(0)


1. 冒泡排序

原理:拿自己与上面一个比较,如果上面一个比自己小就将自己和上面一个调换位置,依次再与上面一个比较,第一轮结束后最上面那个一定是最大的数

def bubble_sort(li):
    for i in range(len(li)-1):
        for j in range(len(li)-i-1):
            if li[j] > li[j+1]:
                li[j],li[j+1]=li[j+1],li[j]

li = [1,5,2,6,3,7,4,8,9,0]
bubble_sort(li)
print(li)               # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2. 选择排序

原理:
1、先假定第一个是最小的,依次与其他数比,如果其他数中有比第一个数小就假定这个更小的最小
2、再比,第一轮就可以找到最小的那个放到0号位置,然后在假定1号位置数最小与剩下比较,再找到第二小的数放到第1号位置

import random
def select_sort(li):
   for i in range(len(li) - 1):
      min_loc = i                        #开始先假设0号位置的值最小
      for j in range(i+1, len(li)):      #循环无序区,依次比较,小于min_loc就暂定他的下标最小
         if li[j] < li[min_loc]:         #所以内层for循环每执行一次就选出一个小值
            min_loc = j
      li[i], li[min_loc] = li[min_loc],li[i]
       
li = [1,5,2,6,3,7,4,8,9,0]
select_sort(li)
print(li)               # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

3. 插入排序

原理:
1、列表被分为有序区和无序区两个部分,最初有序区只有一个元素
2、每次从无序区选择一个元素,插入到有序区的位置,直到无序区变空

import random

def insert_sort(li):
   for i in range(1, len(li)):
      tmp = li[i]     #tmp是无序区取出的一个数
      j = i - 1       #li[j]是有序区最大的那个数
      while j >= 0 and li[j] > tmp:
         # li[j]是有序区最大的数,tmp是无序区取出的一个数,tmp从有序区最大的那个数开始比
         # 小就调换位置,直到找到有序区中值不大于tmp的结束
         li[j+1]=li[j]    #将有序区最右边的数向右移一个位置
         j = j - 1
      li[j + 1] = tmp       #将tmp放到以前有序区最大数的位置,再依次与前一个数比较
data = list(range(100))
random.shuffle(data)        #将有序列表打乱
insert_sort(data)
print(data)

原文链接:https://blog.csdn.net/lxp_mocheng/article/details/105096357



所属网站分类: 技术文章 > python文章

作者:dkfj8787

链接: https://www.pythonheidong.com/blog/article/284991/

来源:python黑洞网 www.pythonheidong.com

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0

赞一赞 or 踩一踩

收藏该文
已收藏

评论内容:(最多支持255个字符)

最新文章

  day14装饰器

  用python发送邮件(带html格式的邮件、附件)

  小白的pyqt5浏览器

  树莓派4b搭建PyTorch(for buster)

  Python绘制ROC图

  【python3】输出子字符串的最短长度

  使用sorted函数对字典元素排序

  leetcode 1162.地图分析 python BFS 宽度优先搜索

  数据预处理和特征工程

  numpy基础(part5)--卷积

优质资源排行榜

 python经典电子书大合集下载 下载次数 8148

 零基础java开发工程师视频教程全套,基础+进阶+项目实战(152G) 下载次数 7556

 零基础前端开发工程师视频教程全套,基础+进阶+项目实战(共120G) 下载次数 7446

 零基础大数据全套视频400G 下载次数 7009

 零基础php开发工程师视频教程全套,基础+进阶+项目实战(80G) 下载次数 6896

 零基础软件测试全套系统教程 下载次数 6507

 这个项目是人人网的爬虫程序 下载次数 6506

 全套人工智能视频+pdf 下载次数 6446

 IOS全套视频教程 基础班+就业班 下载次数 4681

10  python视频各种视频很多 下载次数 3877

11  编程小白的第一本python入门书(高清版)PDF下载 下载次数 3769

12  effective python编写高质量Python代码的59个有效方法 pdf下载 下载次数 3433

13  Python深度学习 pdf下载 下载次数 3203

14  笨办法学python pdf下载 下载次数 3111

15  Python Cookbook第三版中文PDF下载高清完整扫描原版 下载次数 3045

16  树莓派Python编程指南 pdf下载 下载次数 3029

17  python从入门到精通视频(全60集)python视频教程下载 下载次数 3009

18  Python基础教程 pdf下载 下载次数 3002

19  python项目开发视频 下载次数 3002

20  使用python+pygame开发的小游戏《嗷大喵快跑》源码下载 下载次数 3001

21  黑马2017年java就业班全套视频教程 下载次数 2993

22  Python算法教程_中文版 pdf下载 下载次数 2989

23  python实战项目 平铺图像板系统源码下载,适用于想要保存,标记和共享图像,视频和网页的用户 下载次数 2987

24  利用python实现程序内存监控脚本 下载次数 2987

25  老男孩python自动化视频 下载次数 2983

26  老王python基础+进阶+项目视频教程 下载次数 2975

27  尚硅谷Go学科全套视频 下载次数 2973

28  某硅谷Python项目+AI课程+核心基础视频教程 下载次数 2968

29  Web前端实战精品课程 下载次数 2968

30  tron python小游戏 下载次数 2963

31  [小甲鱼]零基础入门学习Python 下载次数 2962

32  老男孩python全栈开发15期 下载次数 2959

33  2017最新web前端开发完整视频教程附源码 下载次数 2948

34  流畅的Python PDF下载高清完整扫描原版 下载次数 2941

35  Python高性能编程 pdf下载 下载次数 2932

36  最新全套完整JAVAWEB2018开发视频 下载次数 2926

37  Spring boot实战视频6套下载 下载次数 2910

38  python全套视频十五期(116G) 下载次数 2910

39  利用Python进行数据分析 pdf下载 下载次数 2895

40  简明python教程 (A Byte of Python)pdf下载 下载次数 2893

41  Python项目实战 下载次数 2888

42  30个小时搞定Python网络爬虫 含源码 下载次数 2887

43  python全自动抢火车票教程-python视频教程下载 下载次数 2883

44  尚硅谷大数据之Hadoop视频 下载次数 2877

45  python接口测试视频 下载次数 2874

46  Python A~B~C~ python视频教程下载 下载次数 2868

47  全套python量化交易视频教程 下载次数 2866

48  数据结构与算法视频(小甲鱼讲解-全) 下载次数 2864

49  web小程序表白天数倒计时源码下载 下载次数 2863

50  python基础视频教程 下载次数 2862