二分法查找

随机产生15个不想等的[0,100]之间的随机数,对这15个数从小到大排序,然后应用二分法查找34是否在这15个随机数里边

 1 function random(num) {
 2     var arr = []
 3     while(arr.length < num) {
 4         var num = Math.floor(Math.random()*100); //生成一个0-100的随机数
 5         if(arr.length === 0) {
 6             arr.push(num)
 7         } else {
 8             for(var i = 0;i<arr.length;i++) {
 9                 if(arr.join(',').indexOf(num)<0){
10                     arr.push(num)
11                 }
12             }
13         }
14         
15     }
16     return arr
17     
18 }
19 let newArray = random(15)
20 
21 newArray.sort(function(a,b){
22     return a-b
23 })
24 console.log(newArray)
25 
26 function getNum(arr,num) {
27     var len = arr.length,
28     st = 0,
29     end = len-1;
30     while(st<=end){
31         var mid = Math.floor((st+end)/2)
32         if(num == arr[mid]) {
33             return mid
34         }else if(num> arr[mid]){
35             st = mid+1
36         } else {
37             end = mid-1
38         }
39     }
40     return arr
41 }
42 let cur = getNum(newArray,34)
43 if(cur instanceof Array) {
44     console.log('无')
45 } else {
46     console.log('找到了下表为'+ cur)
47 }

 

posted @ 2020-03-04 18:38  府谷市民小柴  阅读(169)  评论(0编辑  收藏  举报