当初我还是一个无忧无虑开开心心的写着弱智代码的蒜头。上面这句话就是我的座右铭,敲代码需要学算法和数据结构?不存在!实现一些业务逻辑,if-else搞定,遍历个对象, 遍历个数组,遍历个对象内的数组,大不了我加一层for循环,拿起键盘就是干!
直到被残酷的现实,代码敲着敲着你就会发现,数据结构是绕不过去的坎,不是计算机科班的人来说必须要硬啃了,所以就一遍学习一遍啃书本吧。毕竟之前唯一能手写的算法,只有冒泡排序…..
那就先从快排搞起吧,
let array = [8,4,6,10,7,1,3];
// var array = [1,2,44,4,65,6,34,5,13,88,485,61]
function recurseSort(arr) {
if (arr.length === 1){
// 递归跳出条件
return arr;
} else {
let left = 0,
len = arr.length,
right = len-1,
mid = Math.ceil((right + left)/2),
pivot = Math.ceil((arr[left] + arr[right] + arr[mid])/3),
arrLeft = [];
arrRight = [];
for (let i = 0; i < len; i++) {
if(arr[i]else{
arrRight.push(arr[i]);
}
}
console.log('pivot = ' + pivot);
console.log(' rightArr -> ' + arrRight);
console.log(' LeftArr -> ' +arrLeft);
console.log(' ');
return recurseSort(arrRight).concat(recurseSort(arrLeft))
}
}
console.log(array);
console.log(recurseSort(array));
没有什么算法是一层循环搞不定的,如果有,就再来一层。
—— 欧阳蒜苗