氣泡排序和選擇排序流程圖

劍指天涯心有夢發表於2018-06-11

氣泡排序

  1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
  3. 針對所有的元素重複以上的步驟,除了最後一個。
  4. 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

氣泡排序流程圖

氣泡排序和選擇排序流程圖

虛擬碼

a <- {
'0':4,
'1':6,
'2':3,
'3':2,
'4':1,
'length': 5
}
輪數 = 1
左手指向的下標 

while(輪數 < a['length'])
    左標 = 0
    while(左標 <= a['length'] - 1 - 輪數)
        if a[左下標] < a[左下標+1]
        else
            t <- a[左標]
            a[左標] <- a[左標+1]
            a[左標+1] <- t
        end
        左標 <- 左標+1
    end
    輪數 <- 輪數 + 1
end
print a
複製程式碼

選擇排序

工作原理: 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

選擇排序流程圖

氣泡排序和選擇排序流程圖

虛擬碼

    a<-{
    '0'=4,
    '1'=6,
    '2'=3,
    '3'=2,
    '4'=1,
    'length'=5
}
輪數=1
    while(輪數<a['length'])
        min左標<-輪數-1;左標<-min左標+1
        while(左標<a['length'])
            if  a[左標]<a[min左標]
                a[min左標]<-a[左標]
            else
                什麼也不做
            end
            左標<-左標+1
        end
        t<-a[輪數-1]
        a[輪數-1]<-a[min左標]
        a[min左標]<-t
        
        輪數<-輪數+1
    end
    print a複製程式碼

相關文章