简单排序方法–冒泡法,简单选择排序,直接插入排序

简单排序

冒泡法:两两比较大小,交换位置
m=[1,3,4,2,5,7,6,8,9,11,32,42,52,13,15,26,19,57,53,49,80,70,69,58,48,34,67,89,92,46,75,71,73,50,48,84,24,20,28,53]
count=0
count_c=0
for i in range(len(m)):
    flag=False
    for j in range(len(m)-i-1):
        count+=1
        if m[j]<m[j+1]:
            m[j],m[j+1]=m[j+1],m[j]
            count_c+=1
            flag=True
    if not flag:
        break
print(m,count,count_c) 

简单选择排序:两两比较大小,找出极值,和两端交换
m=[1,3,4,2,5,7,6,8,9,11,32,42,52,13,15,26,19,57,53,49,80,70,69,58,48,34,67,89,92,46,75,71,73,50,48,84,24,20,28,53]
count=0
count_c=0
for i in range(len(m)//2):
    maxindex=i
    minindex=-i-1
    for j in range(i+1,len(m)-i):
        count+=1
        if m[maxindex]<m[j]:
            maxindex=j
        if m[minindex]>m[-j-1]:
            minindex=-j-1
    if i !=maxindex:
        m[i],m[maxindex]=m[maxindex],m[i]
        count_c+=1
        if i ==minindex or i ==len(m)+minindex:
            minindex=maxindex
    if -i-1 != minindex:
        m[-i-1],m[minindex]=m[minindex],m[-i-1]
        count_c+=1
print(m,count,count_c)

直接插入排序:在开头插入一个数,从第二个开始比较,通过开头的数相互替换
m=[1,3,4,2,5,7,6,8,9,11,32,42,52,13,15,26,19,57,53,49,80,70,69,58,48,34,67,89,92,46,75,71,73,50,48,84,24,20,28,53]
num=[0]+m
count=0
count_c=0
for i in range(2,len(num)):
    num[0]=num[i]
    j=i-1
    count+=1
    if num[j]<num[0]:
        while num[j]<num[0]:
            num[j+1]=num[j]
            count_c+=1
            j-=1
            num[j+1]=num[0]
num.pop(0) 
print(num,count,count_c) 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/87489

(0)
上一篇 2017-09-23 15:58
下一篇 2017-09-23 18:24

相关推荐

  • ifcfg, ip, ss,配置文件 (Blog 7)

    Linux主机接入网络:
    IP/MASK
    GATEWAY
    DNS

    Linux干货 2017-11-27
  • web服务介绍二)

    apache指令说明:http://httpd.apache.org/docs/2.2/mod/directives.html Listen 172.18.100.67:8081  监听某个指定地址和端口启动前检查一下语法:    httpd -t 如果要监听多个端口,要多行写    Listen 80&nb…

    Linux干货 2017-04-20
  • Linux上常用文件管理命令

    1、目录管理类的命令: mkdir, rmdir,tree,cd,pwd,ls mkdir:make directories mkdir [OPTION]… DIRECTORY… -p: 自动按需创建父目录; -v: verbose,显示详细过程; -m MODE:直接给定权限; [root@centos7 ~]# mkdir -pv…

    Linux干货 2016-11-06
  • 选择判断专题脚本编程_第九周练习

    Q1:写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # declare -i y=0 declare -i n=0 for i in $(cut…

    Linux干货 2016-12-25
  • ​文件共享服务之FTP

    文件共享服务之FTP 文件共享服务之FTP 一、什么是文件共享服务 二、FTP 三、响应码 四、FTP存储和mysql存储有什么不同? 五、用户认证 六、FTP安装与配置 一、什么是文件共享服务 简单理解就是文件或存储块设备可以共享给大家使用。  1、实现共享服务有三种! (1)ftp:属于应用层服务,可以跨平台使用(linux<—&gt…

    Linux干货 2016-04-18
  • 关于大型网站技术演进的思考(九)–网站静态化处理–总述(1)

    原文出处: 夏天的森林    在存储瓶颈的开篇我提到像hao123这样的导航网站只要它部署的web服务器数量足够,它可以承载超大规模的并发访问量,如果是一个动态的网站,特别是使用到了数据库的网站是很难做到通过增加web服务器数量的方式来有效的增加网站并发访问能力的。但是现实情况是像淘宝、京东这样的大型动态网站在承担高并发的情况下…

    Linux干货 2015-03-11