为了账号安全,请及时绑定邮箱和手机立即绑定
  • 数组(ArrayList):查询、修改效率高;新增、删除效率低;

    列表(LinkedList):查询、修改效率低;新增、删除效率高;

    查看全部
    1 采集 收起 来源:数据结构概述

    2020-07-03

  • 选择排序

    查看全部
    0 采集 收起 来源:选择排序

    2021-08-17

  • 链表

    package com.damu.mc;
    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.List;public 
    class LinkedTest {    
           public static void main(String[] args) {   
         // 数组实现        List<String> array = new ArrayList<>();      
           // 链表实现        List<String> linked = new LinkedList<>();     
              // 新增数据        long start = System.nanoTime();    
                  for (int i = 0; i < 1000; i++) {           
                   array.add("hello damu"); // 769 9897    
                           // 查询、修改        }      
                             long end = System.nanoTime();    
                                 System.out.println("array: " + (end - start));  
                                       long start2 = System.nanoTime();    
                                           for (int i = 0; i < 1000; i++) {     
                                                  linked.add("hello damu"); // 367 9529      
                                                        // 新增、删除        }     
                                                           long end2 = System.nanoTime();   
                                System.out.println("linked: " + (end2 - start2));    }}
    查看全部
    0 采集 收起 来源:链表

    2021-08-16

  • 队列代码

    package com.damu.mc;


    import java.util.Queue;

    import java.util.concurrent.ArrayBlockingQueue;


    /**

     * 队列操作:项目需求

     *

     * 高并发的业务操作,需要同时处理多个用户的请求(抢购系统)

     *      问题:后端的程序不能及时的处理所有用户的请求

     *      缓冲操作:将用户的请求排队存放(有顺序的存放),让后台系统逐个处理

     *      思考:使用什么样的技术实现起来更加友好?

     * 可以使用普通集合实现

     *      提高效率,使用多线程操作,普通集合存在并发问题需要处理

     * 可以使用线程安全的集合

     *      使用多线程的情况下,完成高效率的操作

     *      处理完每个请求之后,需要删除对应的 请求数据

     * 可以使用队列操作(线程安全)

     *      既能保证多线程情况下的高效率处理

     *      能保证每个请求处理之后自动删除

     *      [

     *      > 保存每个抢购请求时--> 入队操作 offer(url)

     *      > 处理每个抢购请求时--> 出队操作 poll()

     *      ]

     */

    public class QueueTest {


        public static void main(String[] args) {


            // 声明一个队列:存储3个数据

            Queue<String> msg = new ArrayBlockingQueue<String>(3);


            msg.add("damu"); // Collections集合的方法


            msg.offer("大牧"); // 队列的操作方法:增加数据:入队


            msg.element(); // 查询队首位置的第一个数据:不删除


            msg.poll(); // 查询并的删除队首位置的第一个数据:head/front


            msg.size(); // Collections集合的方法,查询队列中的所有数据总数

        }

    }

    查看全部
    0 采集 收起 来源:队列(下)

    2021-08-16

  • 队列代码

    package com.damu.mc;


    import java.util.Queue;

    import java.util.concurrent.ArrayBlockingQueue;


    /**

     * 队列操作:项目需求

     *

     * 高并发的业务操作,需要同时处理多个用户的请求(抢购系统)

     *      问题:后端的程序不能及时的处理所有用户的请求

     *      缓冲操作:将用户的请求排队存放(有顺序的存放),让后台系统逐个处理

     *      思考:使用什么样的技术实现起来更加友好?

     * 可以使用普通集合实现

     *      提高效率,使用多线程操作,普通集合存在并发问题需要处理

     * 可以使用线程安全的集合

     *      使用多线程的情况下,完成高效率的操作

     *      处理完每个请求之后,需要删除对应的 请求数据

     * 可以使用队列操作(线程安全)

     *      既能保证多线程情况下的高效率处理

     *      能保证每个请求处理之后自动删除

     *      [

     *      > 保存每个抢购请求时--> 入队操作 offer(url)

     *      > 处理每个抢购请求时--> 出队操作 poll()

     *      ]

     */

    public class QueueTest {


        public static void main(String[] args) {


            // 声明一个队列:存储3个数据

            Queue<String> msg = new ArrayBlockingQueue<String>(3);


            msg.add("damu"); // Collections集合的方法


            msg.offer("大牧"); // 队列的操作方法:增加数据:入队


            msg.element(); // 查询队首位置的第一个数据:不删除


            msg.poll(); // 查询并的删除队首位置的第一个数据:head/front


            msg.size(); // Collections集合的方法,查询队列中的所有数据总数

        }

    }

    查看全部
    0 采集 收起 来源:队列(下)

    2021-08-16

  • 队列

    查看全部
    0 采集 收起 来源:队列(上)

    2021-08-16

  • 队列

    查看全部
    0 采集 收起 来源:队列(上)

    2021-08-16




  • 查看全部
    0 采集 收起 来源:栈结构

    2021-08-16

  • 数组结构


                            

    查看全部
    0 采集 收起 来源:数组结构

    2021-08-16

  • http://img.mukewang.com/60612a4c0001492705110146.jpg

    1. front == tail :空队列

    2. 新数据入队,后置计数器自增(tail++ )

    3. 队列长度:tail - front

    4. 数据出队:数据从队首出去(删除),前置计数器自增(front++)

    5. 入队和出队操作过程中,为了有效利用空间,会进行数据平移(消耗系统性能),为了改进这个缺点,我们可以用循环队列,就是不用再平移了

    循环队列的判断

    1. front == tail 空队列

    2. (front+1) % len = =front 说明队列中的数据满了

    查看全部
    0 采集 收起 来源:队列(上)

    2021-03-29

  • 冒泡排序 空间O(1)

    时间: O(1)

    最坏 o(n评方)

    查看全部
    0 采集 收起 来源:冒泡排序

    2020-04-28

举报

0/150
提交
取消

邀请2人参与享拼团价

  • ¥36.00

    单独购买

  • ¥1.00

    3人拼团

课程须知
1、需要具备Java基础 2、了解Lambda表达式
老师告诉你能学到什么?
1、能够掌握常见数据结构,包括栈、队列、链表、二叉树和散列表等 2、能够掌握排序算法,包括冒泡排序、选择排序、插入排序等
加群二维码
  • 慕课Java核心用户群
  • 群号:3143167327
  • 付费用户专享
  • 技术学习型社群

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!