程序算法入门基础分享
- 2020 年 9 月 3 日
- 筆記
算法高深莫测,还有很多值得去学习的,下面是纯属是我自己兴趣研究的结合网上的整理的算法程序。
// 冒泡排序========================================= var arr = [3, 6, 8, 7, 2, 1, 5]; for (var i = 0; i <= arr.length-1; ++i) { console.log('第'+i+'次结果---->' + arr) for (var j = 0; j <= arr.length-i-1; ++j) { console.log('过程---->' + arr) if (arr[j] > arr[j+1]) { var midNum = arr[j+1]; arr[j+1] = arr[j]; arr[j] = midNum; } } } console.log('最终结果---->' + arr) // 递归算法========================================== /* function firstA(n){ if(n == 1){ return 1; } else{ return firstA(n - 1)*n; } } console.log(firstA(3)) */ // 递归算法实战使用==================================== var data = [{ id: '1', name: 'a', pid: '0' }, { id: '2', name: 'b', pid: '0' }, { id: '3', name: 'c', pid: '0' }, { id: '4', name: 'd', pid: '1' }, { id: '5', name: 'e', pid: '2' }, { id: '6', name: 'f', pid: '3' }, { id: '7', name: 'g', pid: '6' }, { id: '8', name: 'g', pid: '2' }, { id: '9', name: 'g', pid: '0' }, { id: '10', name: 'g', pid: '1' }, { id: '11', name: 'g', pid: '3' }, { id: '12', name: 'g', pid: '11' }, { id: '13', name: 'g', pid: '2' }, ]; var addArr = []; for (var i = 0; i < data.length; ++i) { if (data[i].pid == '0') { var obj = { id: data[i].id, name: data[i].name } addArr.push(obj); } } function option2treeDG(data, addArr) { for (let j = 0; j < addArr.length; j++) { let childrenArr = []; let addArrIndex = addArr[j]; let Id = addArrIndex.id; for (let i = 0; i < data.length; i++) { let crrIndex = data[i]; let parentId = crrIndex.pid; if (parentId == Id) { //判断是否为子节点 let objTemp = { id: crrIndex.id, name: crrIndex.name }; childrenArr.push(objTemp); } } if (childrenArr.length > 0) { addArrIndex.children = childrenArr; //有儿子节点则递归 option2treeDG(data, childrenArr); } } } option2treeDG(data, addArr) //---------------------------------------------------------------------------- //自由组合实现======================================================== var data = ['白菜', '土豆', '萝卜', '冬瓜', '西红柿']; function getGroup(data, index = 0, group = []) { var need_apply = new Array(); // 每一次提出data里面新的菜品 need_apply.push(data[index]); // 组合 for (var i = 0; i < group.length; ++i) { need_apply.push(group[i] + ',' + data[index]); } for(var j=0; j<need_apply.length; ++j){ group.push(need_apply[j]); } // group.push.apply(group, need_apply); // 结束条件 if (index + 1 >= data.length) { return group; } else { // 递归 return getGroup(data, index + 1, group); } } console.log(getGroup(data));
纯属个人对于算法的分享,有更好的可以一起讨论