Java練習題(四):一種特殊排序法

最近希望花點時間,重新訓練自己解題的能力,故找了一些經典的題目進行練習。
解法不一定是最有效率、最低複雜度、最佳效能的,完全是依照自己的想法做!

---

假設題目要求:給一串整數數列,並根據數列長度為奇數或偶數有不同排序方式,
ex: 若數列長度為奇數{1, 2, 3, 4, 5},排序後應為: {2, 4, 5, 3, 1}

ex: 若數列長度為偶數{1, 2, 3, 4, 5, 6},排序後應為: {2, 4, 6, 5, 3, 1}

觀察題目後瞭解,關鍵為最大數的位置及排序方法,若數列長度為奇數,則最大數位置為數列長度 / 2 ,之後根據大小順序為最大數左邊、右邊、左邊、右邊...依序置入。若數列長度為偶數,則最大數位置為數列長度 / 2 - 1,之後根據大小順序為最大數右邊、左邊、右邊、左邊...依序置入。

解題構想:由使用者輸入一數字N, 之後生成數列長度為N的隨機正整數, 並用 Bubble Sort 針對原始數列進行排列。之後根據數列長度為奇數或偶數進行排序,排序時先將最大數插入其位置,之後以最大數將數列分割為左右兩邊,分別以兩個 int 變數儲存下一個數在左邊與右邊的位置;再以一 int 變數判斷目前位置該為最大數的左邊或右邊。

程式碼: