Josephus problem約瑟夫斯問題
2022-02-19
置頂文章
[JAVA]模擬環形鏈接串列(CircularLinkedList)
- 119
- 0
- data structure
- 2022-02-27
Josephus problem約瑟夫斯問題
模擬雙向鏈接串列(DoublyLinkedList)的新刪修查
作法請看下方function mergeLinkedListByOrder
[原解]一個迴圈遍歷所有元素,用兩個索引使兩個值可互相比較(索引 i 有條件移動,索引 j 規律+1移動);
若兩個值不相等,即將不相等次數+1,索引 i 方能+1移動,直到遍歷結束。
[後解]一個迴圈切成兩半,各自遍歷,最後再將取得的不重複陣列元素個數加總回傳。
新建類別模擬單向鏈接串列:
可以自動按照heroNo大到小排序
可以將節點進行新刪修查:
新增相同heroNo給予訊息提示,無法新增
無法修改heroNo,但可以修改heroName & heroNickname
使用陣列模擬佇列,先進先出的特性,並且陣列可覆用儲存新的值。
思路:
1. 以文件保存稀疏矩陣
2. 以稀疏矩陣保存棋子所在的X,Y座標、與值(1代表黑子、2代表白子)
3. 讀取文件還原稀疏矩陣
4. 將稀疏矩陣還原成原二維陣列
參考資料:https://programmerall.com/article/3518233476/
原理:分而治之(Divide and conquer)
Average case時間複雜度:O(n)
陣列倒置(遞迴版)
原理:減而治之(Decrease and conquer):將大問題拆解成小問題來解決
常見使用此原理的演算法:Insertion Sort[玩撲克牌時的排序原理], Shell Sort和Binary Search
參考資料:https://jumperc2p.github.io/InformisTry/posts/ithome-triathlon/decon-insertion-sort/