簡單排序方法–冒泡法,簡單選擇排序,直接插入排序

簡單排序

冒泡法:兩兩比較大小,交換位置
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.www58058.com/87489

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

相關推薦

  • CentOS Linux 系統計劃任務簡單介紹

    CentOS  Linux 系統計劃任務簡單介紹 §·linux 系統計劃任務 ※·linux中Centos計劃任務的程序為:cron 周期性任務計劃:cron 相關的程序包: cronie: 主程序包,提供crond守護進程及相關輔助工具 cronie-anacron:cronie的補充程序;用于監控cronie任務執行狀況;如cronie中的任…

    Linux干貨 2016-09-08
  • 20160803用戶權限作業

    三種權限rwx對文件和目錄的不同意義 文件:r:可以cat查看文件中的內容,可以查看文件的屬性          w:可以ll查看文件的屬性,也可以往文件中寫入內容,如果其父目錄具有寫和執行權限就可刪除其內部文件        &…

    Linux干貨 2016-08-07
  • MariaDB之MHA配置

    工作拓撲 一、MHA簡明:     MHA(Master HA)是一款開源的MySQL的高可用程序,它為MySQL主從復制架構提供了    automating master failover 功能。MHA在監控到master節點故障時,會提升其中    擁有最新數據的…

    2014-10-08
  • 第二周作業

    linux 文件管理命令 rm、mv、cp rm rm命令:remove rm [OPTION]… FILE… 常用選項: -i:interactive (默認rm是‘rm -i’的別名) -f:force -r: recursive        &nb…

    Linux干貨 2016-12-08
  • 內核編譯

    單內核體系設計、但充分借鑒了微內核設計體系的優點,為內核引入模塊化機制。 內核組成部分核心,一般為bzImage,通常在/boot目錄下,名稱為vmlinuz-VERSION-RELEASE;: kernel: 內核 kernel object: 內核對象,一般放置于/lib/modules/VERSION-RELEASE/ [ ]: N [M]: M [*…

    Linux干貨 2015-11-06
  • Linux入門詳解(第一周)

    Linux入門 1. 描述計算機的組成及其功能 計算機硬件的五大組成部分為:運算器、控制器、存儲器、輸入設備和輸出設備; CPU:CPU是執行存儲在主存中指令的引擎;內部又分為算數邏輯單元和控制單元,其中算數邏輯單元主要負責程序的運算與邏輯判斷,控制單元則主要是協調各周邊組件與各單元間的工作;此外CPU內還包含寄存器(如PC)和高速緩存等; 存儲器:這里指主…

    Linux干貨 2016-08-29
欧美性久久久久