算法初体验一一冒泡,快排

冒泡

原理就是前后两两比较,然后交换位置,需要注意的是,最后一次是不用循环的,因为在前一次位置已经发生了改变。

    var Bubbling = function (arr) {
        for (var i = 0, len = arr.length; i < len - 1; i++) {
            for (var j = i + 1; j < len; j++) {
                if (arr[i] > arr[j]) {
                    var temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }

快排 

 原理就是设置i,j两个指针分别指向最左端和最右端,每次比较都从j指针开始向左移动寻找比基准数小的数后停止移动,然后指针i向右移动寻找比基准数大的数后停止移动,交换此时i,j所指向的内容,这算一趟中的一次交换完成,直到i,j指针相遇位置即找到k,将基准数和k位置的数字交换。

                var  arrs=[23,12,32,45,65,14,6,13];

                var quickSort=function(arr,left,right){
                    if(left>right){
                        return;
                    }
                    var i=left,//左指针
                        j=right,//右指针
                        flag=arr[left];//基准
                    while(i!=j){//当i=j时,就代表已经找到了基准
                        //只要大于等于基准数,j指针一直向左移动,i<j是为了跳出i!=j
                        while(arr[j]>=flag&&i<j){
                            j--;
                        }
                        //只要小于等于基准数,i指针一直向右移动
                        while(arr[i]<=flag&&i<j){
                            i++;
                        }
                        //交换位置
                        if(i<j){
                            var temp=arr[i];
                            arr[i]=arr[j];
                            arr[j]=temp;
                        }
                    }    
                    //交换基准值
                    arr[left]=arr[i];
                    arr[i]=flag;
                    //左边继续
                    quickSort(arr,left,i-1);
                    //右边继续
                    quickSort(arr,i+1,right);
                }
                quickSort(arrs,0,arrs.length-1);
                console.log(arrs)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值