zoukankan      html  css  js  c++  java
  • 数据结构和排序算法

    1.链表:在链表中每一项中前一个是数值,后一个是next指针,这个指针指向的是下一个项的值,在你想要在整个链表中添加或者删除项的时候,就是改变指针的指向

    2.栈 :符合数据项是先进后出

    队列:符合数据项是先进先出 类似于现实中排队

    3.二叉树:在走二叉树的流程的时候有三种方法:

      先序(根左右) 中序(左根右) 后序(左右根)

    这里面可以看一下这个二叉树

    ======================================

    1、冒泡排序:

    冒泡算法的原理就是:两个之间进行对比,如果前一个比后一个大,则这两个进行交换;反之,不交换;第一次对比完成之后,所有数中最大的一个一定在最后面;然后对比数组长度个次数;这样就成功的实现所有的数字从小到大进行排列了;

    var arr = [3, 4, 1, 9, 6, 2, 5];
    var temp;
    for (var i = 0; i < arr.length; i++) {
         for (var j = 0; j < arr.length; j++) {
             if (arr[j + 1] < arr[j]) {
                 temp = arr[j + 1];
                 arr[j + 1] = arr[j];
                 arr[j] = temp;
             }
        }
    }
    console.log(arr)

    2、选择排序

    首先在末排序序列中找到最小的元素,存放到排序序列的起始位置,然后在从剩余未排序元素中继续寻找最小的元素,然后放到已排序序列的末尾

    var arr = [3, 4, 1, 9, 6, 2, 5];
    var min;
    var temp;
    for (var i = 0; i < arr.length - 1; i++) {
         min = arr[i];
         for (var j = i + 1; j < arr.length; j++) {
             if (arr[j] < min) {
                  temp = min;
                  min = arr[j];
                  arr[j] = temp;
              }
         }
         arr[i] = min;
     }
     console.log(arr)

    3、快速排序 是目前中比较快速的排序方法

    快速排序就是先是设置两个指针 一个是0 一个是最后的那一个。然后以0对应的那个值为标准,将大于这个数的放到右边 小于这个数的放到左边,等循环完之后,这还不是最后的结果;

    然后将这个值的左边的重复上面的操作。这个值右边的重复上面的操作;这就完成了,从小到大的排序。

    var arr=[1,7,2,3,5,9,6];
    function sort(arr){
        //如果数组只是一个
        if(arr.length<=1){return arr;}
        //获取到数组的中间一个项
        var quiotIndex=Math.floor(arr.length/2);
        var quiot=arr.splice(quiotIndex,1)[0];
        //左边和右边的
        var left=[];
        var right=[];
        //循环 将小的放在左边 大的放在右边
        for(var i=0;i<arr.length;i++){
            if(arr[i]<=quiot){
                left.push(arr[i])
            }else{
                right.push(arr[i])
            }
        }
        //递归
        return sort(left).concat(quiot,sort(right))
    }
    console.log(sort(arr))  

     

  • 相关阅读:
    第二次作业循环语句
    c语言01次作业分支,顺序结构
    PAT 1027. Colors in Mars
    PAT 1026 Table Tennis
    PAT 1035 Password
    PAT 1038. Recover the Smallest Number
    PAT 1028 List Sorting (25)
    PAT 1041 Be Unique (20)
    PAT 1025 PAT Ranking
    1037. Magic Coupon
  • 原文地址:https://www.cnblogs.com/GainLoss/p/6124599.html
Copyright © 2011-2022 走看看