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
浙公网安备 33010602011771号