- 二分查找(折半查找)
- 递归
- 反转
- 冒泡排序
- 二分查找(含递归)
- 原理:先折半一分为二,开始比较,再折半一分为二.......
- 优点:查找效率比利用循环高
- 要求:必须是一个有序的数组,例[1,3,5,7]
- 例子:
let arr = [22,21,16,14,10,7,5,3,1];
function dichotomy(min,max,num){
let mid =Math.floor((max+min)/2);
if(arr[mid]==num){
return mid;
};
if(num<arr[mid]){
return dichotomy(mid+1,max,num);
};
if(num>arr[mid]){
return dichotomy(0,mid-1,num);
};
};
let i = dichotomy(0,arr.length-1,14);
console.log(i);
2.反转
//原理
let str = 'abcdef';
let arr = str.split('');
let i=0, j = arr.length-1;
while(i<j){
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
};
console.log(arr);
//通过数组方法
let str = 'abcdef';
let arr = str.split('').reverse().join('');
console.log(arr);
3.冒泡排序
- 原理:循环嵌套,不断的交换位置
let arr = [21,11,44,21,12,14,32,,53];
for(let i=0;i<arr.length;i++){
for(let j=0;j<arr.length;j++){
if(arr[i]>arr[j]){
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
//第一项
[11,21,44,21,12,14,32,53]
//第二项
[21,11,44,21,12,14,32,53]
//第三项
[44,21,11,21,12,14,32,53]
//第四项
[44,21,21,11,12,14,32,53]
//第五项
[44,21,21,12,11,14,32,53]
//第六项
[44,21,21,14,12,11,32,53]
//第七项
[44,31,21,21,14,12,11,53]
//第八项
[53,44,31,21,21,14,12,11]