【小5聊】简单的算法进行升降序排序(递归算法)

不管学习什么,都可以从简单开始,递归算法也算是比较简单的一类算法

冒泡算法:在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法

可以简单的理解:就是在一个方法自己调用自己,会存在无限循环的情况,需要对方法内的逻辑写法要求比较严谨,确保方法一定能递归完毕

本次代码使用的是javascript

1、假设一数组数据如下

var arr=[20,21,09,10,30,39,1,65,86,23];

2、使用递归算法,从小到大输出

3、实现逻辑

1)定义好方法

2)设定三个参数,数组本身、下标值i、小标值i+1

3)如果数组第一个值比第二个值小,则进行值交换,比如:arr[0]=20 小于 arr[1]=21

交换后,数组编程,arr=[21,20...]

4) 如果第一个和第二个下标都等于数组长度,那么停止递归

5)如果第一个下标大于等于数组长度且第二个下标小于数组长度,那么继续递归,第三个参数值+1,如此递归

6)如果第一个下标小于数组长度且第二个下标等于数组长度,那么代表当前值和所有数组值比对完毕,进行下一个值比对

var arr=[20,21,09,10,30,39,1,65,86,23];

var tempValue=0;
var length=arr.length-1;
function sort(arr,i,j){
    
    if(arr[i]<arr[j]){
        tempValue=arr[i];
        arr[i]=arr[j];
        arr[j]=tempValue;
    }
    
	if(i>=length&&j>=length){
        
        return; //结束递归,完成本次排序
    }
    else if(i<=length&&j<length){
        
        sort(arr,i,j+1)
    }
    else if(i<length&&j==length){
        
        sort(arr,i+1,0)
    }
    
}

sort(arr,0,1);

console.log(arr)

猜你喜欢

转载自blog.csdn.net/lmy_520/article/details/121809548