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

Posted 小5聊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小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)

以上是关于小5聊简单的算法进行升降序排序(递归算法)的主要内容,如果未能解决你的问题,请参考以下文章

小5聊从最简单的算法开始(冒泡算法)

快速排序-递归实现

排序算法之——快速排序(剖析)

小5聊使用正则表达式进行简单(匹配字符串算法)

手把手教你写归并排序算法 (Java代码)

面试记录--阶形(5.11)