91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于JavaScript實現的順序查找算法示例

發布時間:2020-10-25 06:06:26 來源:腳本之家 閱讀:203 作者:布瑞澤的童話 欄目:web開發

本文實例講述了基于JavaScript實現的順序查找算法。分享給大家供大家參考,具體如下:

對于查找數據來說,最簡單的方法就是從列表的第一個元素開始對列表元素逐個進行判斷,直到找到了想要的結果。這個方法叫做順序查找,有時候也被叫做線性查找。它屬于暴力查找技巧的一種。

順序查找實現起來非常簡單,代碼如下:

function generalSearch(arr,data){//普通的順序查找,就是遍歷一遍看是否找到
 for(var i=0;i<arr.length;i++){
  if(arr[i]==data){
   return true;
  }
 }
 return false;
}

那么這樣會不會效率很低呢?對于未排序的數據集來說,當被查到的數據位于數據集的起始位置時,查找是最快、最成功的。通過將成功找到的元素置于數據集的起始位置,可以保證在以后的操作中元素能被更快的查找到,代碼如下:

function betterSearch(arr,data){//自組織查找,將查找率高的依次往前移
 for(var i=0;i<arr.length;i++){
  if(arr[i]==data){
   if(i>0){
    swap(arr,i,i-1);//如果找到則將查找的值和前一個值交換位置
   }
   return true;
  }
 }
 return false;
}
function swap(arr,i,j){//交換位置
 temp=arr[i];
 arr[i]=arr[j];
 arr[j]=temp;
}

那有沒有更加好的方法呢?在查找的世界中,有一個“80-20原則”,指的是對某一數據集執行的80%的查找操作都是對其中20%的數據元素進行查找。所以我們可以將查找到且處于后80%的元素放在起始位置,而前20%則不需要改變,代碼如下:

function bestSearch(arr,data){//更好的自組織查找,將排名后80%的查找結果調到第一位
 for(var i=0;i<arr.length;i++){
  if(arr[i]==data&&i>(arr.length*0.2)){//如果是后80%
   swap(arr,i,0);
   return true;
  }else if(arr[i]==data){
   return true;//前20%就不移動了
  }
 }
 return false;
}

三種查找的實驗代碼如下:

//進行試驗
var nums=[3,1,4,6,2,9,8,0,5,7];
//普通查找
var bool=generalSearch(nums,3);
document.write(bool+'<br>');//true
var bool=generalSearch(nums,11);
document.write(bool+'<br>');//false
//自組織查找
showNums(nums);//3 1 4 6 2 9 8 0 5 7
betterSearch(nums,2);
showNums(nums);//3 1 4 2 6 9 8 0 5 7
betterSearch(nums,2);
showNums(nums);//3 1 2 4 6 9 8 0 5 7
betterSearch(nums,2);
showNums(nums);//3 2 1 4 6 9 8 0 5 7
//更好的自組織查找
document.write("更好的自組織查找<br>");
bestSearch(nums,5);
showNums(nums);//5 2 1 4 6 9 8 0 3 7
bestSearch(nums,2);
showNums(nums);//5 2 1 4 6 9 8 0 3 7

順序查找的完整代碼:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title></title>
 </head>
 <body>
<script type="text/javascript">
 function generalSearch(arr,data){//普通的順序查找,就是遍歷一遍看是否找到
  for(var i=0;i<arr.length;i++){
   if(arr[i]==data){
    return true;
   }
  }
  return false;
 }
 function betterSearch(arr,data){//自組織查找,將查找率高的依次往前移
  for(var i=0;i<arr.length;i++){
   if(arr[i]==data){
    if(i>0){
     swap(arr,i,i-1);//如果找到則將查找的值和前一個值交換位置
    }
    return true;
   }
  }
  return false;
 }
 function swap(arr,i,j){//交換位置
  temp=arr[i];
  arr[i]=arr[j];
  arr[j]=temp;
 }
 function bestSearch(arr,data){//更好的自組織查找,將排名后80%的查找結果調到第一位
  for(var i=0;i<arr.length;i++){
   if(arr[i]==data&&i>(arr.length*0.2)){//如果是后80%
    swap(arr,i,0);
    return true;
   }else if(arr[i]==data){
    return true;//前20%就不移動了
   }
  }
  return false;
 }
 function showNums(arr){
  for(var i=0;i<arr.length;i++){
   document.write(arr[i]+' ');
  }
  document.write("<br>");
 }
 //進行試驗
 var nums=[3,1,4,6,2,9,8,0,5,7];
 //普通查找
 var bool=generalSearch(nums,3);
 document.write(bool+'<br>');//true
 var bool=generalSearch(nums,11);
 document.write(bool+'<br>');//false
 //自組織查找
 showNums(nums);//3 1 4 6 2 9 8 0 5 7
 betterSearch(nums,2);
 showNums(nums);//3 1 4 2 6 9 8 0 5 7
 betterSearch(nums,2);
 showNums(nums);//3 1 2 4 6 9 8 0 5 7
 betterSearch(nums,2);
 showNums(nums);//3 2 1 4 6 9 8 0 5 7
 //更好的自組織查找
 document.write("更好的自組織查找<br>");
 bestSearch(nums,5);
 showNums(nums);//5 2 1 4 6 9 8 0 3 7
 bestSearch(nums,2);
 showNums(nums);//5 2 1 4 6 9 8 0 3 7
</script>
 </body>
</html>

運行效果如下圖:

基于JavaScript實現的順序查找算法示例

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數據結構與算法技巧總結》、《JavaScript數學運算用法總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結》

希望本文所述對大家JavaScript程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

民乐县| 泸定县| 固阳县| 隆子县| 福安市| 固安县| 石门县| 缙云县| 延吉市| 岳阳县| 汶上县| 合肥市| 肃北| 合江县| 金寨县| 牙克石市| 墨玉县| 江油市| 手游| 舞钢市| 阳原县| 竹溪县| 桐梓县| 高平市| 宁德市| 资中县| 镇安县| 安平县| 铜鼓县| 丰城市| 蛟河市| 项城市| 云浮市| 博白县| 兰溪市| 宁阳县| 探索| 晋州市| 息烽县| 聊城市| 延边|