常見資料結構對應的使用演算法

2022-07-02 09:39:08 字數 993 閱讀 9657

引言:我們在設計程式時,一定會關注到演算法和資料結構,因為資料表示的本質是資料結構設計,資料處理的本質是演算法設計。本篇文章是關於一些常見的資料結構對應適用演算法的情況。 

線性表按儲存方式可分為順序表和煉表。線性表的基本運算是指對線性表的操作,常見的包括:求長度、置空表、遍歷、查詢、修改、刪除、插入、排序等。此外還有複雜的運算,比如線性表的合併、反轉、求中值、刪除重複元素等,其中的各種操作又有詳細的演算法分類,如排序就有經典的幾大排序演算法。

棧是限定在尾部進行插入和刪除操作的線性表。允許插入和刪除操作的稱為棧頂,另一端稱為棧底。因此,棧的操作是後進先出原則進行的。棧的基本運算包括:置空棧、入棧、出棧、取棧頂元素和判空。由於棧是受限的線性表,故可以由順序表和煉表來實現。

佇列也是受限的線性表。它只允許在一端插入,稱為隊尾(rear);另一端刪除,稱為對頭,在隊尾插入稱為入隊,對頭刪除稱為出隊。基本運算包括:置空隊、入隊、出隊、取隊頭和判隊空。它也可以由順序表或者鍊錶來實現。

常見演算法有查詢和排序兩種,其中查詢是計算機資料處理經常用到的一種重要應用,當需要反覆在海量資料中查詢制定記錄時,查詢效率成為系統效能的關鍵。查詢演算法分為靜態查詢和動態查詢,其中靜態查詢包括:順序查詢、二分查詢和分塊查詢;動態查詢包括:二叉排序樹和平衡二叉樹。

下面給出部分查詢演算法的核心**:

二分查詢:

int search_bin(int a, int n, int target)//a[0]不用,a[1]~a[n]儲存資料

return 0;

}常用的排序演算法有:插入排序、氣泡排序、堆排序、選擇排序和歸併排序等,下面同樣給出部分排序演算法的核心**

歸併排序:

void merge(int r,int r1,int s,int m,int t)

while(i<=m) r1[k++]=r[i++];

while(j<=t) r1[k++]=t[j++];

}//遞迴歸併

void mergesort(int r,int r1,int s,int t)

}

演算法常見資料結構

array 陣列最簡單而且應用最廣泛的資料結構之一.特性 使用連續的記憶體來儲存,陣列中的所有元素必須是相同的型別或型別的衍生 同質資料結構 元素可以通過下標直接訪問 linkedlist 鍊錶,線性表的一種,最基本,最簡單,也最為常用的資料結構.特性 元素之間的關係是一對一的關係 除了第乙個和最後...

常見資料結構

陣列 array 在程式設計中,為了處理方便,把具有相同型別的若干變數按有序的形式組織起來。這些按序排列的同類資料元素的集合稱為陣列。在c語言中,陣列屬於構造資料型別。乙個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列 字元陣列...

常見資料結構對比

最近看一本講程式設計藝術的書,裡面提了個問題 常見資料結構有哪些?以前都是用到什麼資料結構,去查相應資料,一直沒仔細想過這個問題,一時心血來潮,決定做個 總結下幾種資料結構的特點。如果哪位大神發現了錯誤,請通知小弟一聲,小弟馬上修改,謝謝。名稱 描述隨機訪問時間複雜度 特點優點 缺點陣列 資料型別的...