選擇排序(SelectionSort)
[JAVA]選擇排序(SelectionSort):小到大
- 484
- 0
- data structure
- 2022-04-14
選擇排序(SelectionSort)
8皇后棋盤 - Recursion
簡易模擬棧(Stack):
[原解]一個迴圈遍歷所有元素,用兩個索引使兩個值可互相比較(索引 i 有條件移動,索引 j 規律+1移動);
若兩個值不相等,即將不相等次數+1,索引 i 方能+1移動,直到遍歷結束。
[後解]一個迴圈切成兩半,各自遍歷,最後再將取得的不重複陣列元素個數加總回傳。
使用陣列模擬佇列,先進先出的特性,並且陣列可覆用儲存新的值。
思路:
1. 以文件保存稀疏矩陣
2. 以稀疏矩陣保存棋子所在的X,Y座標、與值(1代表黑子、2代表白子)
3. 讀取文件還原稀疏矩陣
4. 將稀疏矩陣還原成原二維陣列
接續上篇《初識資料結構 - 最常被使用的物件容器?!》,此篇會針對Array與List做詳盡的解釋。
其實不論使用Array或List,它們在存儲元素資料之前,都會以Node節點(index)來包裝,所以每一元素都被一個Node所包裝。
以下將以圖解來介紹兩者區別,方便讓大家理解。
初學程式不久,常聽大家說:「要精通寫程式,先要學會資料結構與演算法」。顯然地,這些重複性資訊讓我意會到 — 認識資料結構,是我的第一門大課。然而演算法關係到邏輯的思考,經考量目前功力不及,等日後有所體悟再跟大家介紹(笑)。
那麼,什麼是資料結構?白話來說,就是針對場景的需要、選擇正確的物件容器來存儲資料。What? 沒聽過物件容器這種東西!?
物件容器簡單來說,就是以下總類:Array陣列、List串列、Dictionary、Stack堆疊、Queue佇列.....等的總稱。它們都可以容納所有型別(包含自訂型別);以WindowsForm為例,button、textbox、label.....等控件都能放進物件容器裡,所以不要有只能包含基本型別的錯覺。
相信看到這邊,還是有人不了解,為何選擇對的物件容器來存儲資料攸關重要?以及為何這樣做能讓code看起來更清晰簡潔?
以下將以此範例為大家解說:
//若我想知道班上學生(共3名),此次段考每人的平均成績(國、英、數三科平均)為多少?
//輸出學生的姓名與平均成績、班級的科目平均
//限制:個別學生資料存儲成一筆