JSMS09-二分查找数组指定元素

150 阅读1分钟

1、排序

2、查找

    let arr=[123,456,78,321,12,0,5,4578,2,346,78,21,20,36,97,21665,5412];
    /*希尔排序*/
    function shellSort(a){
        let tmp;
        let i;
        for(let shell=5;shell>0;shell=(Math.floor(shell/2))){
            for(let j=shell;j<a.length;j+=shell){
                tmp=a[j];
                for(i=j;i>0&&a[i-shell]>tmp;i-=shell){
                    a[i]=a[i-shell];
                }
                a[i]=tmp;
            }
         }
        return a;
     }
   function ErFen(a,findData){
	let mid=Math.floor(a.length/2);
	let left=0;
	let right=a.length-1;
			
	for(;left<right;){
		if(findData==a[mid]){
			alert("the findData position is "+mid.toString());
			break;
		}else if(a[mid]>findData){
			right=mid;
			mid=Math.floor((left+right)/2);
		}else if(a[mid]<findData){
			left=mid;
			mid=Math.floor((left+right)/2);
			}
		}
	}
            ErFen(arr,21);//返回 postion5