详解冒泡排序,快速排序 ,斐波那契数列 (js实现)

3人阅读 评论(0) 收藏 举报
分类:

==直接复制粘贴即可运行==。

# 冒泡排序  

       /*
       
        冒泡排序 : 将数组从小到大排序            
        每次比较下标相邻的两个数,如果前面的数大于后面的数,则这两个数交换位置。                         这样一来,第一次从0到1 ... 1到2,最后一个下标对应的数肯定是数组的最大值             但前面下标对应的值不一定是有序的。我们可以前面的数在进行排序。直到不被确定
        有序的数只剩一个时,我们就可以确定这个数组是有序的。 
        比如数组大小为10
        第一次轮询 比较9次  (这次剩下9个值不确定)
        第二次轮询 比较8次  (这次剩下8个值不确定)
        第三次轮询 比较7次  (这次剩下7个值不确定)
         ...
        第九次轮询 比较1次  (这次剩下1个值不确定)  可以停止了。  
        空间复杂度 O(1) 时间复杂度O(n^2)                     
    */
    
    let arr = [5, 9, 2, 10, 4, 7, 8, 1, 3, 6];
    function bubbleSort(arr) {
        console.log(arr);
        for (let i = 1; i < arr.length; i++) {
            for (let j = 0; j < arr.length - i; j++) {
                if (arr[j + 1] < arr[j]) {
                    let k = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = k;
                }
            }
        }
        console.log(arr);
    }
    // bubbleSort(arr);     

  ## 快速排序

        /*
        快速排序 
        1.现在一个数组里面找出一个数作为基准数。比如说index=arr[0],
        2.设数组的起始位置和终止位置为m,n ,首先在m处挖了个坑 先从后面往前面找,找到比index
        小的数为止,此时把这个数挖出来,填到之前的坑中。arr[m]=arr[n] ,再从前面向后找,
        找到比index大的数为止 ,把这个数挖出来,填到n对应的坑中。arr[n]=arr[m];依次交替,
        直到m>=n停止,此时把index填到m(n)对应的坑中。arr[m](arr[n])=index.
        此时arr[m]左边的数都小于它,右边的数都大于它。
        3.重复2,直到基准数的两边的数都是1个为止
        时间复杂度O(nlogn) 空间复杂度O(1)
        */
   
    function partitionSort(arr, left, right) {
        let m = left,
            n = right,
            index = arr[left];
        while (m < n) {
            while ((arr[n] >= index) && m < n) {
                n--;
            }
            arr[m] = arr[n];
            while ((arr[m] <= index) && m < n) {
                m++;
            }
            arr[n] = arr[m];
        }
        arr[m] = index;
        return m;
    }
    function quickSort(arr, left, right) {   //更加清晰
        if (left < right) {
            let p = partitionSort(arr, left, right);   // 递归
            quickSort(arr, left, p - 1);    //  左递归
            quickSort(arr, p + 1, right);   //右递归
        }
    }
    quickSort(arr, 0, arr.length - 1);
    console.log(arr);```

  ### 斐波那契数列及其优化

    /*斐波那契数列 第0项,第1项,第2项...第n项  找规律。
     0 1 1 2 3 5 ...  */
 
     
    function fib(n) {
        if (n == 0) {
            return 0;
        } else if (n == 1) {
            return 1;
        } else {
            return fib(n - 1) + fib(n - 2);   //正常的递归操作  逻辑清晰
        }
    }//递归有性能问题。
    function fib_(n) { //状态变量有点多,不太安全。 
        let last = 1;
        let last2 = 0;
        let current = last2;
        for (let i = 1; i <= n; i++) {
            last2 = last;
            last = current;
            current = last2 + last;
        }
        return current;
    }
    let n = fib_(5);
    console.log(n);

    function fib__(n) {   //优化   避免了重复运算。
        function fib___(n, a, b) {
            if (n == 0) return a
            else return fib_(n - 1, b, a + b)
        }
        return fib___(n, 0, 1)
    }
查看评论

js实现两种实用的排序算法——冒泡、快速排序

分享记录两种程序员必备的排序算法:冒泡算法、排序算法,面试日常,很实用!...
  • Loving_M
  • Loving_M
  • 2016-11-01 10:29:19
  • 29448

冒泡排序,快速排序,插入排序

一、冒泡排序 大致分两步: 1、依次对比相邻2个数字,前者比后者大就调换位置 2、重复第一步操作,直到所有数字都按顺序排列 function bubbleSort(arr){ ...
  • huangpb123
  • huangpb123
  • 2017-02-08 18:02:01
  • 875

JavaScript实现冒泡(选择、快速)排序可视化

最近在跟着百度前端技术学院做任务,要将队列图形冒泡排序,并用可视化的方法表现出来。 开始单纯的以为实现了冒泡排序图案会自己动起来,后来才发现还是太年轻。 实现可视化的关键问题在与怎么将排序的每一步渲...
  • Grey_One
  • Grey_One
  • 2017-03-28 17:08:58
  • 585

冒泡排序-JS代码实现

冒泡排序-JS代码实现
  • sweet___smile
  • sweet___smile
  • 2016-06-19 17:43:37
  • 3335

js冒泡排序原理

//----------------------简单版(冒泡排序)----------------- var arr = [7,6,5,4,3,2,1]; //需求:冒...
  • gyq04551
  • gyq04551
  • 2016-11-20 17:16:17
  • 1369

JavaScript排序算法动画演示效果实现

JavaScript排序算法动画演示效果实现。冒泡排序、插入排序、选择排序、快速排序、归并排序、希尔排序动画演示。 实现过程。...
  • liusaint1992
  • liusaint1992
  • 2016-06-13 11:29:40
  • 3776

用JS实现冒泡排序、插入排序、选择排序、快速排序

这些基础的排序算法无论用什么语言,还是都能实现的。
  • ll328062201
  • ll328062201
  • 2014-09-30 12:11:41
  • 1435

我的js:冒泡排序算法选择排序算法以及快速排序算法。

function bubble(a) { var i = a.length, j; var tem; while (i > 0) { for (j = 0; j...
  • evilemon
  • evilemon
  • 2015-08-03 01:27:20
  • 1085

冒泡排序与快速排序比较

Java冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要...
  • liuhaiabc
  • liuhaiabc
  • 2016-09-06 15:43:38
  • 529

js实现的冒泡排序、选择排序、插入排序、快速排序

function bubbleSort( arr ) { for( var i = 0;i < arr.length - 1;i++ ){ ...
  • juzipidemimi
  • juzipidemimi
  • 2017-10-30 20:52:14
  • 141
    个人资料
    等级:
    访问量: 0
    积分: 40
    排名: 0
    文章存档