zoukankan      html  css  js  c++  java
  • js学习之数据结构和算法

    js中的数据结构

    1、列表
      待办事项列表、购物清单、最佳十名榜单等等。

      适用:
        1)数据结构较为简单,
        2)不需要在一个长序列中查找元素,或者对其进行排序

    2、栈

      一摞盘子 ----- 添加删除只能从最上面。
      特点:栈被称为一种后入先出的数据结构。是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快。
      适用:只要数据的保存满足后入先出或先进后出的原理,都优先考虑使用栈

    3、队列

      银行排队----
      特点:队列只能在队尾插入元素,在队首删除元素。
      适用:只要数据的保存满足先进先出、后入后出的原理,都优先考虑使用队列
        1)队列主要用在和时间有关的地方,特别是操作系统中,队列是实现多任务的重要机制
        2)消息机制可以通过队列来实现,进程调度也是使用队列来实现

    4、链表
      JS中数组被实现了成了对象,但是与其他语言相比(比如C或Java),那么它的效率会低很多。这时候,我们可以考虑使用链表(Linked-list) 来替代它,除了对数据的随机访问,链表几乎可以在任何可以使用一维数组的情况中。

    5、字典
      字典是一种以键-值对行驶存储数据的数据结构,javaScript中的Object类就是以字典的形式设计的。

    6、散列
      散列(也称为哈希表)是一种的常用的数组存储技术,散列后的数组可以快速地插入或取用。散列使用的数据结构叫做散列表。
      特点:在散列表上插入、删除和取用数据都非常快,但对于查找操作来说却效率低下。

    7、图
      图由边的集合及顶点的集合组成。地图是我们身边很常见的现实场景,比如每两个城镇都由某种道路相连。
      适用:
        1)交通系统,可以用顶点表示街道的十字路口,边可以表示街道。加权的边可以表示限速或者车道的数量。可以用该系统判断最佳路线及最有可能堵车的街道。
        2)任何运输系统都可以用图来建模。比如,航空公司可以用图来为其飞行系统建模。将每个机场看成顶点,将经过两个顶点的每条航线看作一条边。加权的边可以表示从一个机场到另一个机场的航班成本,或两个机场间的距离,这取决于建模的对象是什么。

    8、二叉树和二叉查找树
      树是计算机科学中经常用到的一种数据结构。树是一种非线性的数据结构,以分层的方式存储数据。
      二叉树每个节点的子节点不允许超过两个。一个父节点的两个子节点分别称为左节点和右节点,通过将子节点的个数限定为2,可以写出高效的程序在树中插入、查找和删除数据。
      二叉查找树(BST)是一种特殊的二叉树,相对较小的值保存在左节点中,较大的值保存在右节点中。这一特性使得查找的效率很高,对于数值型和非数值型的数据,比如单词和字符串,都是如此。

    算法

    1、冒泡排序
      1)比较相邻的两个元素,如果前一个比后一个大,则交换位置。
      2)比较完第一轮的时候,最后一个元素是最大的元素。
      3)这时候最后一个元素是最大的,所以最后一个元素就不需要参与比较大小。

    function bSort(arr) {
        var len = arr.length;
        for (var i = 0; i < len-1; i++) {
            for (var j = 0; j < len - 1 - i; j++) {
                // 相邻元素两两对比,元素交换,大的元素交换到后面
                if (arr[j] > arr[j + 1]) {
                    var temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        return arr;
    }
    
    //举个数组
    myArr = [20,18,27,19,35];
    //使用函数
    bSort(myArr)

     2、统计字符串里出现出现频率最多的字符

    <script>
    var str = 'abcdefffdddddd';
    var obj={};
    for(var i=0;i<str.length;i++){
        var t = str[i];
        if(obj[t]){
            obj[t]++;
        }else{
            obj[t] = 1;
        }
    }
    console.log(obj);
    
    var max=0,tKey;
    for(key in obj){
        if(obj[key] > max){
            max = obj[key];
            tKey = key;
        }
    }
    console.log(tKey)
    </script>
  • 相关阅读:
    PAT A1094 The Largest Generation (25 分)——树的bfs遍历
    PAT A1055 The World's Richest (25 分)——排序
    PAT A1052 Linked List Sorting (25 分)——链表,排序
    PAT A1076 Forwards on Weibo (30 分)——图的bfs
    辅导员
    辅导员面试
    C程序设计
    Excel VBA 基本概念
    Excel函数
    导入excel表的数据到数据库ssh
  • 原文地址:https://www.cnblogs.com/zjz666/p/11537767.html
Copyright © 2011-2022 走看看