1.二分查找法
function binarySearch(A,x){ var low = 0,high = a.length -1; while(low<=high){ var mid = Math.floor((low+high)/2); if(x==A[mid]){ return mid; } if(x<A[mid]){ high = mid -1; } else{ low = mid +1; } } return -1; }
2.冒泡排序法
第一次遍历出最大的数,放到最后,依次类推....
function bubblesort(A) { for(var i = 0;i<A.length;i++){ var sorted = true; for(var j = A.length-1;j>i;j--) { if(A[j] < A[j-1]) { swap(A,j,j-1); sorted = false; } } if(sorted) { return; } } } function swap(arr,i,j){//用于交换数据 var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; return arr; } var arr1 = [3,2,4,6,1,9] bubblesort(arr1) console.log(arr1)//[1,2,3,4,6,9]
3.选择排序法
每次一次遍历出最小的,存放于A[k]中
function selectionSort(A) { for(var i = 0 ;i<A.length -1;i++){ var k = i;//用于存放此次出最小的数 for(var j = i+1;j<A.length;j++){ if(A[j] <A[k]) { k = j; } } if( k != i) { var temp = A[k]; A[k] = A[i]; A[i] = temp; } } return A; } var A = [2,4,1,3,8,4]; selectionSort(A) //[1, 2, 3, 4, 4, 8]
4.插入排序法
function inserSort(A) { for(var i = 0;i<A.length;i++){ var x =A[i]; for(var j = i-1;j>=0&&A[j]>x;j--) { A[j+1] = A[j]; } if(A[j+1] !=x) { A[j+1] =x; } } } var A=[0,1,3,2,4,9]; inserSort(A); console.log(A)
5.插排序法(用的比较少)
function inserSort(A) { for(var i = 0;i<A.length;i++){ var x =A[i]; //x=1 for(var j = i-1;j>=0&&A[j]>x;j--) { A[j+1] = A[j]; A[1]=A[0] } if(A[j+1] !=x) { A[j+1] =x; } } } var A=[2,1,3,2,4,9]; inserSort(A); console.log(A)//[1, 2, 2, 3, 4, 9]
6.递归找最大值
function findMax(A,i) { if(i==0) { return A[0]; } var x = A[i-1]; var y = findMax(A,i -1); return y>x ? y:x; } var A=[2,4,3,8,5,3] var m=findMax(A,A.length);//8