冒泡排序和简单的递归

Posted 鱼鱼疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序和简单的递归相关的知识,希望对你有一定的参考价值。

javascript中 ,冒泡排序也是很重要的一种排序方式,这种方式有固定的格式

 

var arr1=[2,31,33,54,65,-32];
function f1(arr){
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length-i-1;j++){ // 这里用length-i-1 是因为每一次比较之后,都可以减少下次的排序次数。
if(arr[j]<arr[j+1]){ //此条决定是按顺序还是倒序排列
var temp=arr[j]; //temp的作用是给予一个中转点,用于临时存储值,方便arr[j]和arr[j+1]调换位置
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}return arr;
}

console.log(f1(arr1));

简单的递归

递归算法是重要的一种算法,所谓递归就是自己调用自己的一种方法,需要注意递归一定要有个出口,也就是一定要有一个结束递归的条件,否则的话,就会产生思想循环。

function getNum(num){
if(num <1){
return 1;
}else{
return getNum(num-1)*num;
}
}

console.log(getNum(3));

以上这个递归就是求得num的阶层 即num!,还有更多递归的方法,需要多多练习。

    //快速排序,利用递归,比较中间值,进行快速排序
var arr=[2,31,33,54,65,32];
function f1(arr){
if(arr.length<1){
return arr;
}
var midIndex=Math.floor(arr.length/2); //获取中间的索引值
var midNum=arr.splice(midIndex,1)[0]; // 获取中间的数值,取出新的数组后,第0个元素即为数字

var right=[];
var left=[];
for(var i=0;i<arr.length;i++){
if(arr[i]<midNum){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}


return f1(left).concat([midNum],f1(right));
}
console.log(f1(arr));


以上是关于冒泡排序和简单的递归的主要内容,如果未能解决你的问题,请参考以下文章

排序算法杂谈 —— 冒泡排序的递归实现

Scala实现冒泡排序,选择排序和快速排序

归并排序和冒泡排序

冒泡排序

8种面试经典!排序详解--选择,插入,希尔,冒泡,堆排,3种快排,快排非递归,归并,归并非递归,计数(图+C语言代码+时间复杂度)

8种面试经典排序详解--选择,插入,希尔,冒泡,堆排,3种快排及非递归,归并及非递归,计数(图+C语言代码+时间复杂度)