排序在電腦科學中是一個重要的部分。已經有許多優秀的排序演算法被提出。在這個問題中我們將討論一種排序的方式,就是你只能交換相鄰的 2 個元素。如果你想一下的話,你會瞭解以這樣的方式總是可以將一些數字排序。(註:我們通常稱這種排序方式為 Bubble Sort)
給你一串整數,請你用上述的方法來將之由小到大排序。要請你求出最少要交換幾次。例如給你 "1 2 3",那需要交換的次數為 0,因為已經排好了。如果給你 "2 3 1",則最少需要交換2次才可排好序。("2 3 1" → "2 1 3" → "1 2 3")
輸入說明 | 輸出說明 |
---|---|
輸入將以正整數 𝑁(𝑁 ≤ 1000)開始。接下來的幾行將有 𝑁 個整數。輸入將以 EOF 終止。 | 對於每個資料集列印 "Minimum exchange operations : 𝑀",其中 𝑀 是執行排序所需的最小翻轉操作。每一種情況都用一行來表示 |
將 m 作為計算次數的變數,先歸零再做 bubble sort,然後每次交換的時候將次數加 1 即可求得正確解答。
bubble sort (氣泡排序法)
就是將鄰近的兩的數字交換,將大的往右傳遞(類似氣泡不斷浮出水面),最終傳遞到的數字就是未排序中最大的。
假設我們要排序 7 5 1 2 3,第一次排序(最大的會浮到最右邊)順序如下,後面依此類推,不再演示:
AC (5ms, 336KB)
CPE 2星
查看更多資訊請至:https://www.tseng-school.com/