二分法(又称折半查找,Binary Search)
是一种在有序数组中查找某一特定元素的搜索算法。二分法通过将整个数组不断地对半拆分来排除掉不可能存在目标元素的那一半部分,直到找到目标元素或者确定不存在为止。
const BinarySearch = (arr,target) => {
let len = arr.length
let start = 0
let end = len-1
let result = null
while (start<=end){
let mid=Math.ceil((start+end)/2)
if(target===arr[mid]){
result=mid
break;
}else if(target>arr[mid]){
start=mid+1
}else{
end=mid-1
}
}
return result
}
冒泡排序(Bubble Sort)
是一种简单且基本的排序算法。它的原理是多次遍历待排序的数列,每次遍历都比较相邻的两个元素,如果顺序不对就交换这两个元素的位置,经过一轮遍历后,最大的元素会"冒泡"到数列末端。重复进行这个过程,直到整个数列排序完成。因为它的思路类似于水泡在水中不断上升,所以被称为冒泡算法。
这个算法的时间复杂度为O(n^2),其中,n为待排序数列的长度。冒泡排序的优点是代码简单易懂,缺点是因为排序时相邻元素会频繁交换位置,相对来说比较慢,并且在数据规模较大时效率会急剧下降。因此,不适合用于真正的生产环境。
const bubbleFunc = (arr) => {
// [6,3,4,5,7,2] [3,6,4,5,7,2] [3,4,6,5,7,2] [3,4,5,6,7,2] [3,4,5,6,7,2] [3,4,5,6,2,7]
let len=arr.length
for(let i=0;i<len;i++){
for(let j=0;j<len-i-1;j++){
if(arr[j]>arr[j+1]){
let temp=arr[j]
arr[j]=arr[j+1]
arr[j+1]=temp
console.log(arr)
}
}
}
}