原创 linux進程調度淺析

操作系統要實現多進程,進程調度必不可少。 有人說,進程調度是操作系統中最爲重要的一個部分。我覺得這種說法說得太絕對了一點,就像很多人動輒就說"某某函數比某某函數效率高XX倍"一樣,脫離了實際環境,這些結論是比較片面的。   而進程

原创 循環鏈表

循環鏈表介紹         循環鏈表是另一種形式的鏈表,它提供了更爲靈活的遍歷表元素的能力。循環鏈表可以是單向的或雙向的,但區分一個鏈表是不是循環鏈表只要看它有沒有尾部元素即可。在循環鏈表中,最後一個元素的next指針又指回頭元素而不是

原创 冒泡排序

冒泡排序描述        冒泡排序比較表中的相鄰元素,如果它們是逆序的話就交換它們的位置。重複多次以後,最終,最大元素就“沉到”了列表的最後一個位置。第二遍操作將第二大的元素沉下去。這樣一直做,知道n-1遍以後,該列表修排好序了。第 i

原创 插入排序

插入排序的描述        我們假設對較小數組A[0...n-2]排序的問題已經解決了,我們得到了一個大小爲n-1的有序數組:A[0] ≤...≤ A[n-2]。我們如何把這個較小規模的解和元素A[n-1]一同考慮,來得到原問題的解呢?

原创 哈希表

        哈希表支持一種最有效的檢索方法:散列。從根本上來說,一個哈希表包含一個數組,通過特殊的索引值(鍵)來訪問數組中的元素。哈希表的主要思想是通過一個哈希函數,在所有可能的鍵與槽位之間建立一張映射表。哈希函數每次接受一個鍵將返回

原创 合併排序

合併排序描述         合併排序本質上是將一個無序元素集分割成多個只包含一個元素的集,然後不斷的將這些小的集合並,直到一個新的大有序數據集生成。例如:對於一個需要排序的數組A[0...n-1],合併排序把它一分爲二:A[0...(n

原创 基數排序

基數排序的描述        基數排序是另外一種高效的線性排序算法。其方法是將數據按位分開,並從數據的最低有效位到最高有效位,依次排序,從而得到有序數據集合。例如:用基數排序對十進制數據{15,12,49,16, 36, 40}進行排序。

原创 單向鏈表

單鏈表介紹         單鏈表(通常簡稱鏈表)由各個元素之間通過一個指針彼此鏈接起來而組成。每個元素包含兩部分:數據成員和一個稱爲next指針。通過採用這種二成員結構,將每個元素的next指針設置爲指向其後面的元素。最後一個元素的ne

原创 快速排序

快速排序的描述         快速排序是一種基於分治(+遞歸)技術的重要排序算法,廣泛認爲它是解決一般問題的最佳排序算法,屬於比較排序的一種,而且不需要額外的存儲空間。在處理中到大型數據集時,快速排序是一個比較好的選擇。