递归、排序

本文深入探讨了排序算法,包括插入排序、快速排序、冒泡排序和选择排序的实现方式,并通过具体示例展示了算法的工作流程。同时,文章解释了递归的基本概念及其在斐波那契数列计算中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

递归:函数调用自身就是递归,要添加停止操作
把复杂的问题分解成若干个简单的解

function fn(n){ //斐波那契数列
if(n1||n2){
return 1;
}
return fn(n-2)+fn(n-1);
}
console.log(fn(6));

var arr=[10,5,14,34,32,12,7,4];
function charu(arr){ //插入排序
for(var i=1;i<arr.length;i++){
var index=i;
for(var j=i-1;j>=0;j–){
if(arr[j]>arr[index]){
var num=arr[j];
arr[j]=arr[index];
arr[index]=num;
index=j;
}
}
}
return arr;
}
console.log(charu(arr));

var arr=[10,5,14,34,32,12,7,4];
function foo(arr){ //递归快速排序
if(arr.length<=1){
return arr;
}
var num=Math.floor(arr.length/2);
var arrl=[];
var arrc=[];
var arrr=[];
for(var i=0;i<arr.length;i++){
if(arr[i]>arr[num]){
arrr.push(arr[i]);
}else if(arr[i]<arr[num]){
arrl.push(arr[i]);
}else{
arrc.push(arr[i]);
}
}
return arguments.callee(arrl).concat(arrc,arguments.callee(arrr));
}
console.log(‘递归:’+foo(arr));

var arr=[10,5,14,34,32,12,7,4];
function maopao(arr){ //冒泡排序
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
arr[j]=arr[j]+arr[j+1];
arr[j+1]=arr[j]-arr[j+1];
arr[j]=arr[j]-arr[j+1];
}
}
}
}
maopao(arr);
console.log(‘冒泡:’+arr);

var arr=[10,5,14,34,32,12,7,4];
function xuanze(arr){ //选择排序
for(var i=0;i<arr.length-1;i++){
var max=arr[i];
var index=i;
for(var j=i+1;j<arr.length;j++){
if(arr[j]<max){
max=arr[j];
index=j;
}
}
max=arr[i];
arr[i]=arr[index];
arr[index]=max;
}
}
xuanze(arr);
console.log(arr);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值