1.冒泡排序

#!usr/bin/python
# -*- coding: utf-8 -*-
# 冒泡排序
# 思路:从第一个数开始,与其后边元素比较,如果后边数比前边数小,就交换位置,一趟排序后最值元素到了尾部
# 外层循环表示需要比较的趟数,趟数是n-1次,每一趟可以确定一个元素
# 内层循环表示一趟比较需要比较多少次,第一次排序后,最末尾元素就成最大或最小元素了,第二次比较,最后两个元素就成最大或最小元素了
# 此后再比较,有序的不需要再进行比较,所以比较次数跟随i的变大而减小为n-1-i
# 算法优化:有些列表可能就是有序的或者经过少于n-1趟排序后已经有序,后边的排序已经是没有意义了
# 为了解决这个问题,我们可以设置一个标志位,用来表示当前第 i 趟是否有交换,如果有则要进行 i+1 趟,如果没有,则说明当前数组已经完成排序
def bubble_sort(li):n = len(li)for i in range(n-1):is_change=Falsefor j in range(0,n-1-i):if li[j]<li[j+1]:li[j],li[j+1]=li[j+1],li[j]is_change=Trueif not is_change:breakprint(li)
li=[3,5,2,8,7,9,1,4,6]
bubble_sort(li)
print(li)

2.选择排序

#!usr/bin/python
# -*- coding: utf-8 -*-
# 选择排序思路:拿第一个数假设它是最小的,它的索引为最小值索引,然后拿它跟其余元素比较,如果比它小,就记录下该元素索引为最小值索引,
# 一趟下来后min_index记录了最小值的索引,然后跟第一个数交换,最小值就到了第一个位置
# 外层循环表示趟数,内层循环表示第i趟时需要比较几次,因为前i个元素已经有序所以只需要从i+1到n-1即可def select_sort(li):n = len(li)for i in range(n - 1):min_index = ifor j in range(i + 1, n):if li[j] < li[min_index]:min_index = jli[i], li[min_index] = li[min_index], li[i]li = [3, 5, 2, 8, 7, 9, 1, 4, 6]
select_sort(li)
print(li)# 冒泡排序跟选择排序过程比较:
# 都需要n-1趟排序,冒泡是最值移动到列表末尾,选择是最值移动到列表开头
# 冒泡每一趟需要0,n-i-1之间元素进行排序,选择排序是i+1到n之间元素排序,冒泡 n-i-1到n元素是有序的,选择是前i个元素有序

3.插入排序

# 选择排序思想:模拟抓牌动作,抓到一张新牌后,查看手中已经排好序的牌,然后依次比较,找到合适位置插入
# 代码
def insert_sort(li):n=len(li)for i in range(1,n):#从第二张牌开始j=i               #前j-1张牌已经有序while j>0:            #拿第j张牌来跟前j-1张牌进行比较if li[j]<li[j-1]:             #如果第j张牌比前边的小就交换位置li[j],li[j-1]=li[j-1],li[j]j-=1                      #需要查找位置的牌位置-1else:                         #没有找到说明已经有序,直接退出即可break
alist = [17, 20, 93, 54, 77, 32, 45, 226]
print(alist)
insert_sort(alist)
print(alist)

排序算法lowB三人组--冒泡排序-选择排序-插入排序相关推荐

  1. 排序算法lowb三人组-插入排序

    排序算法lowb三人组-插入排序 def insert_sort(li):for i in range(1, len(li)): # i表示摸到的牌的下标tmp = li[i] # 摸到的牌j = i ...

  2. 十大经典排序算法详解(一)冒泡排序,选择排序,插入排序

    养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 目录 1.算法的评判标准 2.排序算法的分类 3.十大经典排序算法-冒泡排序,选择排序,插入排序 ...

  3. Java 与排序算法(2):选择排序

    一.选择排序 选择排序(Selection Sort)是一种简单的排序算法,其基本思想是在待排序序列中选择最小(或最大)的元素,将其与序列的第一个元素交换位置,然后在剩余的元素中继续选择最小(或最大) ...

  4. 《排序算法系列一、简单选择排序》

    2019独角兽企业重金招聘Python工程师标准>>> 一.简单选择排序 描述:给定待排序序列A[ 0......n ] ,选择出第i小元素,并和A[i]交换,这就是一趟简单选择排序 ...

  5. 经典排序算法(6)——直接选择排序算法详解

    直接选择排序(Straight Select Sort)是一种典型的选择排序算法,通过不断选择序列中最大(小)的元素. 一.算法基本思想 (1)基本思想 直接选择排序的基本思想就是:不断从未排序队列中 ...

  6. 自己整理的排序算法之(1) 选择排序

    1 //选择排序 2 package sort; 3 4 public class SelectionSort { 5 public static void SelectionSort(double[ ...

  7. 算法-lowb三人组

    ---恢复内容开始--- d定义: pandas是一个强大的Python数据分析的工具包. pandas是基于NumPy构建的. 安装方法: pip install pandas import pan ...

  8. c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习

    材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...

  9. 【排序算法系列 1】冒泡排序(Bubble Sort)

    [排序算法系列 1]冒泡排序 [排序算法系列 2]选择排序 [排序算法系列 3] 插入排序 [排序算法系列 4] 高级排序--希尔排序(插入排序的改进) [排序算法系列 5] 高级排序--归并排序 [ ...

  10. 02_Python算法+数据结构笔记-冒泡排序-选择排序-插入排序-快排-二叉树

    b站视频:路飞IT学城 清华计算机博士带你学习Python算法+数据结构_哔哩哔哩_bilibili 文章目录 #11 排序介绍 #12 冒泡排序介绍 #13 冒泡排序 #14 选择排序 #15 插入 ...

最新文章

  1. 分形之闵可夫斯基(Minkowski)
  2. 把握数据,驱动未来 | 清华大学大数据研究中心2020年RONG奖学金答辩会成功举办...
  3. 网线的制作方法和千兆网线的施工注意事项
  4. Seata阿里分布式事务中间件(一):Seata的基本介绍
  5. 玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数
  6. java数组复制的方式和效率比较
  7. 文件下载及web文件的contentType类型大全
  8. 8款惊艳的HTML5粒子动画特效
  9. 如何在MySQL中设置外键约束
  10. Android:adb 详细介绍
  11. ios音乐播放器使用综述
  12. 【加密工具】2019年网络安全加密工具排行,好用的计算机加密软件推荐
  13. png变成矢量图_ps中如何在将图转换成矢量图
  14. TBS1237 1/4 扫 48 通道 LED 背光驱动芯片
  15. 分析Android版QQ游戏大厅中游戏的启动机制
  16. html页面如何实现搜索功能,使用jQuery怎么实现一个页面关键字搜索功能
  17. Android:适配器刷新数据无效
  18. MFC--学生管理系统
  19. 学无止境啊,身体是革命本钱
  20. 半角空格 全角空格 不间断空格 通过过滤器解决

热门文章

  1. Java基础进阶Day04
  2. 谷歌colab平台简单使用及读取自己的数据集
  3. Matlab 仿真——直流电机速度控制(2)系统分析
  4. Blender学习笔记(4)材质配色和打光渲染|blender
  5. stm32cubemx hal学习记录:SPI W25Q64
  6. qcap 教程_给winpe添加explorer教程(续):文件列表
  7. linux svn图形工具,linux 下svn图形客户端smartsvn 安装
  8. LogLog Counting
  9. 智能手机基于众包的室内定位
  10. 合并Windows系统镜像教程(Win 7+win 8.1 合盘)