close

比我想像中的還要難上許多……
老師給的ex我只能說是piece of cake.

第一種就是ex.



由小到大,最大數不是頭,也沒有重複的數字。

*i →的意思是i從這裡開始往右,←j的意思是j從這裡開始往左。 
**找到>k的數字為i,<k的數字為j.
***當i和j的順序交換,等於i在j的右邊時,j和k交換

題目:①54219155298235832587設54=k,21=i→,87=←j
 ki→(i)     (j)←j91=i(>k),25=j(k<)

54212555298235839187 
 k i→(i)  (j) ←j  

5421253529825583918755=i(>k),35=j(k<)
 k  i→(j)(i)←j   ***

29212535548255839187將54當作分割點,分成兩半
 ki→
(j)
←j
(i)
     先做54的左邊

2521293554825583918729也當作一個分割點
(所以35不用動)

2125293554825583918754的左半邊完成
      ki→
(j)

(i)
 ←j設82=k,55=i→,87=←j
i在j的左邊→j和k交換

2125293554558283918782為一個點
       82k
(j)
i→
(i)
←j設83=k,91=i→,87=←j
i在j的左邊→j和k交換

21252935545582839187 

21252935545582838791 

























老師教的步驟是當分割點出現才開始算。
不過這樣子到後面另一種亂數排序的時候,誰能告訴我要怎麼分步驟呢?
所以我是照課本的步驟去標數字。





另一種,有兩個相同變數,第一個數=最大數





(待補)

arrow
arrow
    全站熱搜

    nottec 發表在 痞客邦 留言(1) 人氣()