當前位置:首頁 » 操作系統 » 表查詢演算法

表查詢演算法

發布時間: 2022-06-15 07:43:14

❶ 有序表查找的遞歸演算法

int Search_Bin(SSTable ST, keyType key)
{
return Search_Bin(ST, key, 1, ST.length);
}

int Search_Bin(SSTable ST,keyType key, int low, int high)
{
if(low==high)
{
if(ST.elem[low].key == key)
return low;
else
return 0;
}
int mid = (low+high)/2;
int result = 0;
if( (result=Search_Bin(ST, key, low, mid))!=0)
return result;
else
return Search_Bin(ST, key, mid+1, high)

}

❷ 線性表查找演算法有哪些常見的內部排序演算法有哪些

【知識點】
若矩陣A的特徵值為λ1,λ2,...,λn,那麼|A|=λ1·λ2·...·λn

【解答】
|A|=1×2×...×n= n!
設A的特徵值為λ,對於的特徵向量為α。
則 Aα = λα
那麼 (A²-A)α = A²α - Aα = λ²α - λα = (λ²-λ)α
所以A²-A的特徵值為 λ²-λ,對應的特徵向量為α

A²-A的特徵值為 0 ,2,6,...,n²-n

【評注】
對於A的多項式,其特徵值為對應的特徵多項式。
線性代數包括行列式、矩陣、線性方程組、向量空間與線性變換、特徵值和特徵向量、矩陣的對角化,二次型及應用問題等內容。

❸ 用順序表實現二分查找演算法

#include<iostream>
using namespace std;
int a[100];
int find1(int l,int r,int x)
{
int m=(l+r)/2;
if(l>r)//查找失敗
return -1;
if(x==a[m])//查找成功返回下標
return m;
else if(x>a[m])
find1(m+1,r,x);//查找右邊
else if(x<a[m])
find1(l,m-1,x);//查找左邊
}
int main()
{//折半查找,待查找數列必須有序(升序或降序)
int x,n,num;
cin>>n;//輸出n待查找數列長度
for(int i=0;i<n;i++)
cin>>a[i];//輸入n個數
cin>>x;//輸入查找值
num=find1(0,n,x);//調用折半查找函數(返回下標)
if(num!=-1)//數組下標0~n-1;返回-1查找失敗
{
cout<<x<<":在數組中的位置 ";
cout<<num<<endl;
}
else
cout<<"查找失敗"<<endl;
return 0;
}

❹ 「單鏈表的查找演算法」謝謝各位

對單鏈表進行查找的思路為:對單鏈表的結點依次掃描,檢測其數據域是否是我們所要查好的值,若是返回該結點的指針,否則返回NULL。

因為在單鏈表的鏈域中包含了後繼結點的存儲地址,所以當我們實現的時候,只要知道該單鏈表的頭指針,即可依次對每個結點的數據域進行檢測。

以下是應用查找演算法的一個例子:

#include <stdio.h>
#include <malloc.h>
#include <string.h> /*包含一些字元串處理函數的頭文件*/
#define N 10
typedef struct node
{
char name[20];
struct node *link;
}stud;

stud * creat(int n) /*建立鏈表的函數*/
{
stud *p,*h,*s;
int i;
if((h=(stud *)malloc(sizeof(stud)))==NULL)
{
printf("不能分配內存空間!");
exit(0);
}
h->name[0]='\0';
h->link=NULL;
p=h;
for(i=0;i<n;i++)
{
if((s= (stud *) malloc(sizeof(stud)))==NULL)
{
printf("不能分配內存空間!");
exit(0);
}
p->link=s;
printf("請輸入第%d個人的姓名",i+1);
scanf("%s",s->name);
s->link=NULL;
p=s;
}
return(h);
}

stud * search(stud *h,char *x) /*查找鏈表的函數,其中h指針是鏈表的表頭指針,x指針是要查找的人的姓名*/
{
stud *p; /*當前指針,指向要與所查找的姓名比較的結點*/
char *y; /*保存結點數據域內姓名的指針*/
p=h->link;
while(p!=NULL)
{
y=p->name;
if(strcmp(y,x)==0) /*把數據域里的姓名與所要查找的姓名比較,若相同則返回0,即條件成立*/
return(p); /*返回與所要查找結點的地址*/
else p=p->link;
}
if(p==NULL)
printf("沒有查找到該數據!");
}

main()
{
int number;
char fullname[20];
stud *head,*searchpoint; /*head是表頭指針,searchpoint是保存符合條件的結點地址的指針*/
number=N;
head=creat(number);
printf("請輸入你要查找的人的姓名:");
scanf("%s",fullname);
searchpoint=search(head,fullname); /*調用查找函數,並把結果賦給searchpoint指針*/
}

❺ 怎樣才能快速搜索路由表有哪些著名的搜索演算法

有三個路由器,a,b和c。路由器a的兩個網路介面f0和s0
分別連接在
10.1.0.0和10.2.0.0網段上;路由器b的兩個網路介面s0和s1
分別連接在
10.2.0.0和10.3.0.0網段上;路由器c的兩個網路介面s0和e0
分別連接在
10.3.0.0和10.4.0.0網段上;
如上圖中各路由表的前兩行所示,通過路由表的網路介面到與之直接相連的網
絡的網路連接,其向量距離設置為0。這即是最初的路由表。
當路由器b和a以及b和c之間相互交換路由信息後,它們會更新各自的路由表。
例如,路由器b通過網路埠s1收到路由器c的路由信息(10.3.0.0,s0,0)和(10.4.0.0,e0,0)後,在自己的路由表中增加一條(10.4.0.0,s1,1)路由信息。該信息表示:通過路由器b的網路接
口s1可以訪問到10.4.0.0網段,其向量距離為1,該向量距離是在路由器c的基礎上加1獲得的。
同樣道理,路由器b還會產生一條(10.1.0.0,s0,1)路由,這條路由是通過網路埠s0從路由器a
獲得的。如此反復,直到最終收斂,形成圖中所示的路由表。
概括地說,距離向量演算法要求每一個路由器把它的整個路由表發送給與它直接連接的其它路由
器。路由表中的每一條記錄都包括目標邏輯地址、相應的網路介面和該條路由的向量距離。當一個路
由器從它的相鄰處收到更新信息時,它會將更新信息與本身的路由表相比較。如果該路由器比較出一條
新路由或是找到一條比當前路由更好的路由時,它會對路由表進行更新:將從該路由器到鄰居之間的
向量距離與更新信息中的向量距離相加作為新路由的向量距離。

c語言怎麼查表

查表是數據結構中的一個概念。查表的前提是先建表。

在C語言實現中,建表也就是將一系列的數據,或者有原始數據中提取出的特徵值,存儲到一定的數據結構中,如數組或鏈表中。
查表的時候,就是對數組或鏈表查詢的過程。常用的方式有如下幾種:
1 對於有序數組,可以採用折半查找的方式快速查詢。
2 對於鏈表,可以根據鏈表的構建方式,進行針對性查詢演算法的編寫。
3 大多數情況,可以通過遍歷的方式進行查表。即從第一個元素開始,一直順序查詢到最後一個元素,逐一對比。

❼ 數據結構問題 順序表 有序表 的查找演算法分別是什麼

順序表用直接查找法,有序表用二分(折半)查找法。

❽ 查找演算法有哪些

查找演算法常用的有,順序查找,二分查找,哈希表查找,等等。

❾ 查找演算法的作用

查找就是在一個數據集合里查找到你需要的數據,查找演算法就是在查找過程中使用的演算法。查找演算法有好多,最基礎的就是線性表查找。
因為提到了演算法,所以需要注意的是時間復雜度跟空間復雜度,進而涉及到數據的存儲方式,比如數組,鏈表,矩陣,樹,圖等等數據結構,這些數據結構可以幫助你降低演算法的復雜度。
如果有興趣,隨便找本數據結構書翻翻,裡面或多或少都會有講解。用關鍵字標識一個數據元素,查找時根據給定的某個值,在表中確定一個關鍵字的值等於給定值的記錄或數據元素。在計算機中進行查找的方法是根據表中的記錄的組織結構確定的。順序查找也稱為線形查找,從數據結構線形表的一端開始,順序掃描,依次將掃描到的結點關鍵字與給定值k相比較,若相等則表示查找成功;若掃描結束仍沒有找到關鍵字等於k的結點,表示查找失敗。二分查找要求線形表中的結點按關鍵字值升序或降序排列,用給定值k先與中間結點的關鍵字比較,中間結點把線形表分成兩個子表,若相等則查找成功;若不相等,再根據k與該中間結點關鍵字的比較結果確定下一步查找哪個子表,這樣遞歸進行,直到查找到或查找結束發現表中沒有這樣的結點。分塊查找也稱為索引查找,把線形分成若干塊,在每一塊中的數據元素的存儲順序是任意的,但要求塊與塊之間須按關鍵字值的大小有序排列,還要建立一個按關鍵字值遞增順序排列的索引表,索引表中的一項對應線形表中的一塊,

熱點內容
燕山大學編譯原理期末考試題 發布:2024-11-05 20:13:54 瀏覽:523
華為電腦出現臨時伺服器 發布:2024-11-05 20:05:08 瀏覽:405
斗戰神免費挖礦腳本 發布:2024-11-05 19:53:25 瀏覽:662
網吧伺服器分別是什麼 發布:2024-11-05 19:45:32 瀏覽:389
忍3無傷腳本 發布:2024-11-05 19:11:40 瀏覽:302
江蘇雲伺服器散熱器定製 發布:2024-11-05 18:50:15 瀏覽:719
投資分紅網站源碼 發布:2024-11-05 18:36:38 瀏覽:505
我的世界推薦適合萌新的伺服器 發布:2024-11-05 18:30:03 瀏覽:580
c語言考級 發布:2024-11-05 18:16:54 瀏覽:505
易語言不能編譯安卓app嗎 發布:2024-11-05 18:14:11 瀏覽:838