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

簡單排序

冒泡法:兩兩比較大小,交換位置
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
下一篇 2017-09-23

相關推薦

  • shell中的if else語句與文件查找find淺析

    shell中的if else語句與文件查找find淺析    上篇文章中我們講述了shell腳本編程的初步入門,其中講到了shell編程中的順序執行,順序執行時一種簡單的小腳本,如果在編輯腳本的時候遇到要做出條件判斷執行的時候要怎么辦呢?我們學習過if之后你會發現這會很簡單。if 語句通過關系運算符判斷表達式的真假來決定執行哪個分支。 S…

    Linux干貨 2016-08-16
  • N25第一周博客作業

    本文主要闡述了以下幾個知識點: l  計算機的組成及功能; l  介紹各不同發行版的linux及其聯系; l  描述linux的哲學思想,及其本人對其個人理解; l  介紹一些linux基本命令及相關選項; l  如何在linux上使用幫助命令; l  羅列出發行版linux上的一些基礎目錄及其功用…

    Linux干貨 2016-11-29
  • N22-第2周作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示 cd、pwd、ls、alias、cat、more、less、tail、cut、wc、touch、mv、cp、rm pwd:用戶當前所在目錄 [xuc@localhost ~]$ pwd /home/xuc cd:切換目錄  cd  [/PATH…

    Linux干貨 2016-08-22
  • 文本處理工具sed、vim

    文本處理工具sed、vim 一、sed的使用 1、sed的概念 sed簡單地說sed是一種行處理工具。 sed 是一種流性的行編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space ),接著用sed 命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末…

    Linux干貨 2016-08-11
  • corosync + pacemaker搭建高可用mysql

    一、實驗圖     二、環境準備  1)確保時間同步 [root@SQL1 ~]# crontab -e  */5 * * * * /usr/sbin/ntpdate 172.16.2.15 [root@SQL2 ~]#…

    Linux干貨 2015-06-30
  • 安裝LNMP + 搭建WordPress個人博客

    安裝LNMP + 搭建Wordpress個人博客 前言 來到馬哥教育也有幾個月了,學了很多知識?,F在想要把這些知識能夠存儲在一個地方,隨時隨地的都能看到,于是乎我就想到了博客,以下我搭建Wordpress的過程。 安裝LNMP 一、關掉防火墻 # chkconfig iptables off 二、安裝開發包和庫文件 #&nbsp…

    Linux干貨 2016-05-31
欧美性久久久久