雜記1

鏈表和數(shù)組的區(qū)別

從邏輯結構來看

  • 數(shù)組必須事先定義固定的長度碾褂,不能適應數(shù)據(jù)動態(tài)地增減的情況。當數(shù)據(jù)增加時暂殖,可能超出原先定義的元素個數(shù)价匠;當數(shù)據(jù)減少時,造成內存浪費呛每;數(shù)組可以根據(jù)下標直接存取踩窖。
  • 鏈表動態(tài)地進行存儲分配,可以適應數(shù)據(jù)動態(tài)地增減的情況晨横,且可以方便地插入洋腮、刪除數(shù)據(jù)項箫柳。(數(shù)組中插入、刪除數(shù)據(jù)項時啥供,需要移動其它數(shù)據(jù)項悯恍,非常繁瑣)鏈表必須根據(jù)next指針找到下一個元素

從內存存儲來看

  • (靜態(tài))數(shù)組從棧中分配空間, 對于程序員方便快速,但是自由度小
  • 鏈表從堆中分配空間, 自由度大但是申請管理比較麻煩
    從上面的比較可以看出,如果需要快速訪問數(shù)據(jù)伙狐,很少或不插入和刪除元素涮毫,就應該用數(shù)組;相反贷屎, 如果需要經常插入和刪除元素就需要用鏈表數(shù)據(jù)結構了罢防。

排序基本

  • 作為排序依據(jù)的數(shù)據(jù)項稱為排序碼,也即數(shù)據(jù)元素的關鍵碼唉侄。若關鍵碼是主關鍵碼咒吐,則對于任意待排序序列,經排序后得到的結果是唯一的美旧;若關鍵碼是次關鍵碼渤滞,排序結果可能不唯一。

  • 若對任意的數(shù)據(jù)元素序列榴嗅,使用某個排序方法妄呕,對它按關鍵碼進行排序:若相同關鍵碼元素間的位置關系,排序前與排序后保持一致嗽测,稱此排序方法是穩(wěn)定的绪励;而不能保持一致的排序方法則稱為不穩(wěn)定的。

排序分為兩大類:內排序和外排序唠粥。

  • 內排序:指待排序列完全存放在內存中所進行的排序過程疏魏,適合不太大的元素序列。
  • 外排序:指排序過程中還需訪問外存儲器晤愧,足夠大的元素序列大莫,因不能完全放入內存,只能使用外排序官份。

插入排序

  • 插入排序是一種簡單直觀的排序算法只厘。它的工作原理是通過構建有序序列,對于未排序數(shù)據(jù)舅巷,在已排序序列中從后向前掃描羔味,找到相應位置并插入。插入排序在實現(xiàn)上钠右,通常采用in-place排序(即只需用到O(1)的額外空間的排序)赋元,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間搁凸。

  • 插入排序都采用in-place在數(shù)組上實現(xiàn)媚值,其運作如下:

1.從第一個元素開始,該元素可以認為已經被排序
2.取出下一個元素护糖,在已經排序的元素序列中從中向前掃描
3.如果該元素(已排序)大于新元素杂腰,將該元素移到下一位置
4.重復步驟3,直到找到已排序的元素小于或等于新元素的位置
5.將新元素插入到該位置后
6.重復步驟2~5

冒泡排序

  • 冒泡排序是一種簡單的排序算法椅文。它重復地走訪過要排序的數(shù)列,一次比較兩個元素惜颇,如果他們的順序錯誤就把他們交換過來皆刺。
    運作如下:

比較相鄰的元素。如果第一個比第二個大凌摄,就交換他們兩個羡蛾。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對锨亏。這步做完后痴怨,最后的元素會是最大的數(shù)。
針對所有的元素重復以上的步驟器予,除了最后一個浪藻。
持續(xù)每次對越來越少的元素重復上面的步驟,直到沒有任何一對數(shù)字需要比較乾翔。

快速排序

  • 通過一趟排序將待排記錄分割成獨立的兩部分爱葵,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,則可分別對這兩部分記錄繼續(xù)進行排序反浓。
    是冒泡排序的一種升級;
    基本原理:

設定一個基準值(也就是軸)
將比軸小的值萌丈,移到軸的左邊,形成左子數(shù)列
將比軸大的值雷则,移到軸的右邊辆雾,形成右子數(shù)列
分別對左子數(shù)列和右子數(shù)列做上述三個步驟(遞歸),直到左子數(shù)列或右子數(shù)列只剩一個值或沒有數(shù)值

選擇排序

  • 比如在一個長度為N的無序數(shù)組中月劈,在第一趟遍歷N個數(shù)據(jù)度迂,找出其中最小的數(shù)值與第一個元素交換,第二趟遍歷剩下的N-1個數(shù)據(jù)艺栈,找出其中最小的數(shù)值與第二個元素交換......第N-1趟遍歷剩下的2個數(shù)據(jù)英岭,找出其中最小的數(shù)值與第N-1個元素交換,至此選擇排序完成湿右。

希爾排序

  • 主要就是選定一個h的有序數(shù)組來進行預排序诅妹。這樣最后進行插入排序的時候,能使數(shù)據(jù)局部有序。就算交換的話吭狡,交換的次數(shù)也不會很多尖殃。這樣h序列稱為遞增序列。希爾的性能很大部分取決于遞增序列 划煮。一般來說我們使用這個序列3x + 1.

堆排序

  • 它是選擇排序的一種送丰。可以利用數(shù)組的特點快速定位指定索引的元素弛秋。堆分為大根堆和小根堆器躏,是完全二叉樹。

二叉樹

  • 在二叉樹的第i層上至多有2i-1個結點(i≥1)蟹略。
  • 深度為k的二叉樹至多有2k-1個結點(k≥1)登失。
  • 遍歷二叉樹
  • 先序遍歷(DLR)

⑴訪問根結點;
⑵先序遍歷根結點的左子樹挖炬;
⑶先序遍歷根結點的右子樹揽浙。

  • 中序遍歷(LDR)

⑴中序遍歷根結點的左子樹;
⑵訪問根結點意敛;
⑶中序遍歷根結點的右子樹馅巷。

  • 后序遍歷(LRD)

⑴后序遍歷根結點的左子樹;
⑵后序遍歷根結點的右子樹草姻。
⑶訪問根結點钓猬;

  • 層次遍歷(隊列實現(xiàn))

構建一個隊列專門用來儲存二叉樹節(jié)點指針,先把根節(jié)點入隊撩独,假設是A逗噩,對A元素進行訪問,然后對A的左右孩子依次入隊跌榔,假設B,C异雁。A出隊列,再是對B進行訪問僧须,同樣將B的左右孩子入隊列纲刀,B出對列······重復以上,知道隊列為空担平。

哈希

  • Hashing查找示绊,也稱為散列查找或雜湊查找。它既是一種查找方法暂论,又是一種存貯方法面褐,稱為散列存貯。散列存貯的內存存放形式也稱為散列表
  • 哈希函數(shù)

在記錄的關鍵字與記錄的存儲地址之間建立的一種對應關系叫哈希函數(shù)取胎。
哈希函數(shù)是從關鍵字空間到存儲地址空間的一種映象
哈希函數(shù)可寫成:addr(ai)=H(keyi)
ai是表中的一個元素
addr(ai)是ai的存儲地址
keyi是ai的關鍵字

  • 哈希表

應用哈希函數(shù)展哭,由記錄的關鍵字確定記錄在表中的地址湃窍,并將記錄放入此地址,這樣構成的表叫哈希表匪傍。

  • 哈希查找

又叫散列查找您市,利用哈希函數(shù)進行查找的過程叫哈希查找。

  • 沖突:key1?key2役衡,但H(key1)=H(key2)的現(xiàn)象叫沖突
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末茵休,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子手蝎,更是在濱河造成了極大的恐慌榕莺,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棵介,死亡現(xiàn)場離奇詭異帽撑,居然都是意外死亡,警方通過查閱死者的電腦和手機鞍时,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扣蜻,“玉大人逆巍,你說我怎么就攤上這事∶梗” “怎么了锐极?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長芳肌。 經常有香客問我灵再,道長,這世上最難降的妖魔是什么亿笤? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任翎迁,我火速辦了婚禮,結果婚禮上净薛,老公的妹妹穿的比我還像新娘汪榔。我一直安慰自己,他們只是感情好肃拜,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布痴腌。 她就那樣靜靜地躺著,像睡著了一般燃领。 火紅的嫁衣襯著肌膚如雪士聪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天猛蔽,我揣著相機與錄音剥悟,去河邊找鬼。 笑死,一個胖子當著我的面吹牛懦胞,可吹牛的內容都是我干的替久。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼躏尉,長吁一口氣:“原來是場噩夢啊……” “哼蚯根!你這毒婦竟也來了?” 一聲冷哼從身側響起胀糜,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤颅拦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后教藻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體距帅,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年括堤,在試婚紗的時候發(fā)現(xiàn)自己被綠了碌秸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡悄窃,死狀恐怖讥电,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情轧抗,我是刑警寧澤恩敌,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站横媚,受9級特大地震影響纠炮,放射性物質發(fā)生泄漏。R本人自食惡果不足惜灯蝴,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一恢口、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧穷躁,春花似錦弧蝇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至睦授,卻和暖如春两芳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背去枷。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工怖辆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留是复,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓竖螃,卻偏偏與公主長得像淑廊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子特咆,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容