1. 冒泡排序
冒泡排序就是每次两两比较如果前者比后者大则交换位置,反之则不动
// 冒泡排序
let arr = []; // 首先随机生成一个长度为100的0~100的数组
for(let i = 0; i< 100; i++) {
arr.push(Math.floor(Math.random() * 101))
}
const bubbleSort = (arr) => {
let isSort = true;
arr = [...arr];
for(let i = 0; i< arr.length -1; i++) {
for(let j = 0; j< arr.length - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
arr[j] = [arr[j+1], arr[j+1] = arr[j]][0];
isSort = false
}
}
if (isSort) break;
}
return arr
}
bubbleSort(arr)
2.二分法查找
二分法是比较快速值在哪个位置的一种查找方法(前提是数组元素从小到大排序的),其核心在于先定义一个最小索引0,最大索引length -1;然后在定一个中间索引,每次比较取中间值缩小范围从而找到给定值所在数组位置。
const arr = [0,23,67,54,89,96,123]
const searchSort = (arr,data) => {
var max = arr.length-1, //最大值
min = 0; //最小值
while(min<=max){
var mid = Math.floor((max+min)/2); //中间值
if(arr[mid]<data){
min = mid+1;
}else if(arr[mid]>data){
max = mid-1;
}else{
return mid;
}
}
return -1; //没找到返回-1
}
console.log(searchSort(arr, 96)) // 5