資料結構:儲存資料的不同方式:
演算法:同一問題不同的解決方法
陣列(演算法:每次插入需分配新空間):插入慢、查詢快
鍊錶(演算法:每次插入指標指向即可):插入快、查詢慢
如何選擇演算法:(大o表示法)
1)時間測算:(時間複雜度) big o
long before =system.currenttimemullis();
for 迴圈
long after system.cuurentimemullis();
before - after
2)空間測算:
時間複雜度:
時間--規模--變化規律
訪問陣列某個位置的值
o(1):時間是固定的
訪問鍊錶某個位置的值
o(n) :當問題規模擴大,時間成線性變化
求乙個陣列的平均數:o(n)
求乙個陣列最大值:o(n)
資料結構與演算法 堆排序演算法回顧
堆排序是利用堆這種資料結構而設計的一種排序演算法,堆排序是一種選擇排序,它的最壞,最好,平均時間複雜度均為o nlogn 它也是不穩定排序。堆排序的應用場景主要有 topk問題,優先順序佇列等。原理 1.將存放在array 0,n 1 中的n個元素建成初始堆 2.此時,堆頂元素該堆的最大值 3.將堆...
資料結構與演算法(1)
演算法 資料結構 一 演算法 1.演算法的幾個特徵是什麼。2.演算法複雜性的定義。大o 小o分別表示的含義。3.遞迴演算法的定義 遞迴演算法的兩要素。4.分治演算法的思想,經典的分治演算法 全排列 二分搜尋 歸併排序 快速排序 線性時間選擇 最接近點對問題 5.動態規劃演算法解題框架,動態規劃演算法...
資料結構與演算法(1)
1 線性表 2 棧 3 佇列 4 字串 補充 遞迴 1 樹與二叉樹 2 圖 1 查詢 2 排序 編寫相關演算法 資料結構 入門問題 1.為什麼學習資料結構?1 高階程式設計的理論指導 2 提公升編碼能力 3 面試中經常被問及,看發展潛力 2.有哪些資料結構?2.11線性結構 線性表 棧 佇列 陣列 ...