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

简单排序

冒泡法:两两比较大小,交换位置
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)
10590628461059062846
上一篇 2017-09-23
下一篇 2017-09-23

相关推荐

  • 磁盘管理

    回顾 {a..f} a b c d e f ]# arr=({a..z}) ]# echo ${#arr[*]} 26 ]# N1=N2 ]# N2=zhuchaoming ]# echo ${!N1} eval N1=\$$N2 echo $N1 创建临时文件 mktemp NAME.XXX 交互式登录 /etc/profile –> /…

    Linux干货 2016-09-07
  • 破坏grub实验之二

    删除/etc/fstab和/boot和grub的stage1阶段 [root@localhost ~]# rm -rf /boot [root@localhost ~]# rm -rf /etc/fstab  [root@localhost ~]# …

    Linux干货 2016-09-28
  • 系统管理之程序包管理(二)yum详解

    系统管理之程序包管理(二)yum详解:     上节向大家介绍了程序包管理的理论和rpm命令的使用,本篇文章接着向大家介绍rpm的前端使用工具,方便大家更快捷的管理,使用rpm包,提高工作效率。 一 概论: Centos:yum,dnf 两个rpm前端工具 YUM :yellow dog, Yellowdog,Upda…

    Linux干货 2016-08-24
  • 网络班N22期第五周博客作业

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@bogon ~]# cat /etc/passwd | grep -E "^(root|fedora|user1)\>" | cut -d:&nb…

    Linux干货 2016-09-15
  • FHS文件系统各目录功能

    前言:     文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易。linux的哲学是一切皆文件,linux系统中的一切包括设备文件,我们都能在linux的倒置树状文件系统中找到相对应的文件。所以清楚的明白根目录下的每个子目录包含什么样的文件是很有必要的。我们将以Filesystem Hierarchy Standar…

    Linux干货 2016-10-17
  • LVM逻辑卷管理

    一、简述 什么是逻辑卷?LVM(Logical Volume Manager)利用Linux内核device-mapper实现存储系统的虚拟化。通过LVM,把底层存储硬件抽象化成存储逻辑块,再将这些逻辑块集合构成存储池,从存储池空间划分分区,可以简单地扩大或缩小分区,而不用担心硬盘没有足够的连续空间。 使用逻辑卷分区有什么用?使用逻辑卷分区重点在于可以弹性地…

    Linux干货 2016-09-06