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))  

     

  • 相关阅读:
    SpringBoot(十):SpringBoot的简单事务管理
    SpringBoot(九):SpringBoot集成Mybatis
    独立式智能扫码插座
    STC-51开发板-单片机控制数码管&按键&点阵综合操作
    单片机定时器与数码管静态显示
    半导体器件
    电路模型与规律
    单片机-引脚并行口结构讲解
    单片机-基础知识,存储原理,引脚简介———(第一个小程序)
    C语言-综合知识点
  • 原文地址:https://www.cnblogs.com/GainLoss/p/6124599.html
Copyright © 2011-2022 走看看