順序表演算法
① 數據結構與演算法———順序表
By FastHorse March 5, 2017
按順序方式存儲的線性表稱為 順序表(arry - based list) ,又稱為 向量(vector) ,通過創建 數組 來建立。順序表中的每個元素按其順序有唯一的索引值,又稱下標值,可以用來方便地訪問元素內容。
只要確定了基地址,線性表中的任意元素的地址都可以方便地計算出來,從而達到隨機存取的效果,因此元素間的物理相鄰關系表示了他們邏輯上的相鄰關系。
下面著重介紹基於數組的順序表插入、刪除運算。
根據位置插入是將指定元素插入到指定位置。除了涉及被更新的那個元素之外,其他的線性關系的相對順序應保持不變。為此,需要對順序表實施一系列的元素移動操作來維護邏輯和存儲的線性關系。
c++程序實現:
根據大小插入演算法適用於數據元素遞增的順序表。從順序表的第一個元素開始尋找,找到比自己大的元素就插在該元素前面。輸入一個數字x,從順序表的第一個元素開始循環,判斷輸入的元素是否小於等於順序表中元素,若成立,則將輸入元素插入表中,若不成立,則繼續判斷順序表中下一個元素。
c++程序實現:
刪除運算需要事先檢查順序表是否為空表,只在非空表是才能進行刪除。該演算法要求輸入一個刪除的位置,判斷該位置是否有效。若有效,通過左移運算將data[i-1]數組元素刪除,從而完成對指定位置元素刪除的功能。
c++程序實現:
區域刪除演算法適用於要在順序表中刪除多個相鄰元素。首先輸入兩個刪除的位置,同樣通過左移運算將該區域內的所有元素刪除。
c++程序實現:
張銘,王騰蛟,趙海燕. 數據結構與演算法. 高等教育出版社,2008.6
② 數據結構:設計一個高效演算法,將順序表中的所有元素逆置,要求演算法空間復雜度為O(1)。
設計一個高效演算法,將順序表中的所有元素逆置,要求演算法空間復雜度為O(1)掃描順序表L的前半部分元素L.data[i] (0<=i<L.length/2),將其與後半部分的對應元素L.data[L.length-1-i]進行交換即可。
順序表的存儲只要確定了起始位置,表中任一元素的地址都通過下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1≤i≤n 其中,L是元素佔用存儲單元的長度。
(2)順序表演算法擴展閱讀:
數據的物理結構是數據結構在計算機中的表示,它包括數據元素的機內表示和關系的機內表示。由於具體實現的方法有順序、鏈接、索引、散列等多種。
數據元素的機內用二進制位(bit)的位串表示數據元素。當數據元素有若干個數據項組成時,位串中與各個數據項對應的子位串稱為數據域(data field)。
③ 順序表的排序演算法
給你舉一些比較常用的排序法:
交換排序法
冒泡排序 | 雞尾酒排序 | 奇偶排序 | 梳排序 | 侏儒排序 | 快速排序 |臭皮匠演算法 | Bogo排序
選擇排序法
選擇排序 | 堆排序 | Smooth排序 | 笛卡爾樹排序 | 錦標賽排序 | 循環排序
插入排序法
插入排序 | 希爾排序 | 二叉查找樹排序 | 圖書館排序 | Patience排序
歸並排序法
歸並排序 | 多相歸並排序 | Strand排序
分布排序法
美國旗幟排序 | 珠排序 | 桶排序 | 爆炸排序 | 計數排序 | 鴿巢排序 | 相鄰圖排序 | 基數排序 | 閃電排序
混合排序法
Tim排序 | 內省排序 | Spread排序 | 反移排序 | J排序
其他
雙調排序器 | Batcher歸並網路 | 兩兩排序網路
④ 順序表中元素插入演算法詳細解釋
//將順序表第i-1個元素至最後一個元素全部向後移動一位
for(j=L->last;j>=i-1;j--)
L->data[j+1]=L->data[j]
//將新元素x插入到原第i-1個元素的位置
L->data[i-1]=x;
//更新順序表長度
L->last++;
⑤ 在有序順序存儲的線性表中查找一個元素
線性表順序查找演算法分析:
查找與數據的存儲有關,線性表{a1,a2,....,an}有順序和鏈式兩種存儲結構.作為順序表存儲時實現順序查找演算法.順序查找是一種最簡單的查找方法.它的基本思路是:從表的一端開始,順序掃描線性表,依次將掃描到的關鍵字和給定值k相比較,若當前掃描到的關鍵字與k值相等,則查找成功;若掃描結束,扔未找到關鍵字等於k的元素,則查找失敗。順序查找演算法(在順序表R[0..n-1]中查找關鍵字為k的元素,成功是返回找到的元素的邏輯序號,失敗時返回。
首先定義順序表的類型,再定義一個SeqSearch()函數實現順序查找.在SeqSearch(SeqListR,intn,KeyTypek)中,其中是在具有n個數據元素R的SeqList中查找值為k的過程.在函數進行運算過程中,首先是通過while判斷,當i