數據結構常見問題合集


面筋分類匯總-測開向

排序算法的復雜度、穩定性、內部外部排序

  • 快排的時間復雜度(NlogN)、最壞情況(N^2)

  • 快速排序:

    • 首先任意選取一個數據(通常選用數組的第一個數)作為關鍵數據,然后將所有比它小的數都放到它左邊,所有比它大的數都放到它右邊,這個過程稱為一趟快速排序。
    • 快速排序不是一種穩定的排序算法,也就是說,多個相同的值的相對位置也許會在算法結束時產生變動。

基礎數據結構

  • 數組和鏈表的區別

    • 數據中數組的內存是順序存儲的,而鏈表是隨機存取的。
    • 數組隨機訪問效率很高,但插入刪除操作的效率比較低。
    • 鏈表在插入刪除操作上相對數組有很高的效率,而如果訪問鏈表中的某個元素,那就要從表頭逐個遍歷,直到找到所需要的元素為止,所以鏈表的隨機訪問效率比數組低。
    • 鏈表不存在越界問題,數組有越界問題。
    • 數組節省空間但是長度固定。鏈表雖然變長,但是占了更多的存儲空間。
    • 靜態)數組從棧中分配內存空間,對於程序員方便快速,但是自由度小。鏈表從堆中分配空間,自由度大,但申請管理比較麻煩。
  • 數據結構上的堆和棧有什么區別、底層結構是什么

    • 1.棧內存存儲的是局部變量,基本類型的變量表示的是數據本身;而堆內存存儲的是實體,每個實體對象都有地址值和默認初始化值;
    • 2.棧內存的讀取和更新速度要快於堆內存,因為局部變量的生命周期很短;
    • 3.棧內存使用一級緩存,存放的變量生命周期一旦結束就會被釋放;而堆內存使用二級緩存,存放的實體會被垃圾回收機制不定時的回收。

索引提到了B樹
樹是用什么存儲的,可不可以用數組存儲
紅黑樹
最大的K個數用什么排序算法,復雜度、同樣是NlogN, 快排和堆排序有什么區別。

END


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM