面筋分類匯總-測開向
排序算法的復雜度、穩定性、內部外部排序
-
快排的時間復雜度(NlogN)、最壞情況(N^2)
-
快速排序:
- 首先任意選取一個數據(通常選用數組的第一個數)作為關鍵數據,然后將所有比它小的數都放到它左邊,所有比它大的數都放到它右邊,這個過程稱為一趟快速排序。
- 快速排序不是一種穩定的排序算法,也就是說,多個相同的值的相對位置也許會在算法結束時產生變動。
基礎數據結構
-
- 數據中數組的內存是順序存儲的,而鏈表是隨機存取的。
- 數組隨機訪問效率很高,但插入刪除操作的效率比較低。
- 鏈表在插入刪除操作上相對數組有很高的效率,而如果訪問鏈表中的某個元素,那就要從表頭逐個遍歷,直到找到所需要的元素為止,所以鏈表的隨機訪問效率比數組低。
- 鏈表不存在越界問題,數組有越界問題。
- 數組節省空間但是長度固定。鏈表雖然變長,但是占了更多的存儲空間。
- 靜態)數組從棧中分配內存空間,對於程序員方便快速,但是自由度小。鏈表從堆中分配空間,自由度大,但申請管理比較麻煩。
-
- 1.棧內存存儲的是局部變量,基本類型的變量表示的是數據本身;而堆內存存儲的是實體,每個實體對象都有地址值和默認初始化值;
- 2.棧內存的讀取和更新速度要快於堆內存,因為局部變量的生命周期很短;
- 3.棧內存使用一級緩存,存放的變量生命周期一旦結束就會被釋放;而堆內存使用二級緩存,存放的實體會被垃圾回收機制不定時的回收。
樹
索引提到了B樹
樹是用什么存儲的,可不可以用數組存儲
紅黑樹
最大的K個數用什么排序算法,復雜度、同樣是NlogN, 快排和堆排序有什么區別。