查找-之順序表查找-(數據的排列無序)

查找--摘要

 靜態查找表:只做查找操作的查找表

動態查找表:在查找過程中還做插入和刪除數據元素的操作

查找時可改變數據元素之間的關係以獲得較高的查找性能,將查找集合組織成表、樹結構。也即是從數據的存儲方式作出改進。

還有從算法層面做出改進:二分、插值、斐波那契查找等

 

順序查找:線性查找,從表的第一個逐個開始和待查找元素比較,直到最後一個(暴力破解)

//C
//a爲待查數組,n爲待查數組長度,key爲待查找值  
int Sequential_Search(int *a,int n, int key)
{
   int i;
   for(i=1;i<=n,i++)
   {
      if(a[i]==key)
         return i;
   }

  return 0;
}

順序查找的優化

不需要每次讓i和n比較 ,在數據較多時效率提升

//C
int Sequential_Search2(int *a,int n, int key)
{
 int i;
 a[0]=key;
 i=n;
 while(a[i]!=key)
 {
   i--;
 }
  return i;
}

時間複雜度:O(n)

空間複雜度:O(1)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章