美文网首页
数据结构与算法

数据结构与算法

作者: 双囍_小赵 | 来源:发表于2021-11-16 14:24 被阅读0次

计算机提供的数据单位:变量和数组。
其他的数据结构是对这两种数据的管理;

如果是频繁的增删改查就使用LinkedList不要用ArrayList;
如果没有频繁往指定位置去插入数据,用ArrayList是可以的。

LinkedList:

双链表,变量下标为1的有下标2的地址指向,而2也有1的下标指向。如图: 未命名文件 (2).png
算法的时间与空间:
例:a = 10;  b = 20;

1.空间换时间
      int temp = 0;
      temp = a;
      a = b;
      b = temp;
  新开辟了一块内存区域存储temp变量,没有计算,只是转赋值,空间换了计算的时间;

2.时间换空间
      a = a+b;
      b = a;
      a = a-b;
 指令增多,增加了计算成本,所以会耗时,但是没有多的变量了,所以是时间换空间;
HashMap

底层hash表,key-value做法;
hash冲突不能完全解决

hash中涉及到“&”运算:
在java里面这个是一个‘与’运算符,就是二进制中的 同为1才为1.
比如 x = 6&3;
6 = 0110;
3 = 0011;
x = 0010 = 2;

扩展内容:

左移运算:
在最右边补上n个0
例:6 << 1
转化6为二进制:110
左移一位:1100
左移后补一位,十进制就是 12;
如果是负数左移,负数直接被丢弃,部位0,最终结果将变成0;
右移运算:
正数高位补0,负数高位补1,低位舍弃,右移一位相当于除2,右移n位相当于除以2的n次方
例:11 >> 2
转化为2进制:0000 0000 0000 0000 1011
右移两位:      0000 0000 0000 0000 0010
将右边开始的两位移除,就变成了十进制 2 ;

#####右移负数:
计算机计算数据只会以补码的方式进行计算。
所以需要懂得原码—>反码—>补码之间的转换关系:例 :-10;
-10原码:    1000 1010     // 二进制以8位计算  
-10反码:    1111 0101     //反码就是取相反的,符号位不变
-10补码:    1111 0110     //反码基础上+1
所以-10会输出:    1111 0110;

-10>>2 :                  1111 1101(高位补1)
对比正数:
10>>2:                     0000 0010 (高位补0)

无符号右移:
正数:和右移运算的正数右移是一样的,前面高位补充0;
正数10右移10>>>2:   0000 1010->0000 0010    
负数-10右移-10>>>2:   
原:0000 0000 0000 0000 0000 0000 0000 0000  1010-> 
反:1111   1111  1111  1111 1111  1111  1111  1111  0101 -> 右移两位,高位补0
移:0011   1111  1111  1111 1111  1111  1111  1111  1101

a>>>=b 的意思是:a = a>>>b;

总结:
负数>>和>>>都是高位补充1;
正数都是高位补充0;
只要是负数都要反算一遍,在进行进位;
'>>'比>>>负数多了一步就是在反算后+1;

public class Test {
    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(10));
        System.out.println(Integer.toBinaryString(-10));

        System.out.println(Integer.toBinaryString(10 >>> 2));
        System.out.println(Integer.toBinaryString(10 >> 2));

        System.out.println(Integer.toBinaryString(-10 >>> 2));
        System.out.println(Integer.toBinaryString(-10 >> 2));

//        打印:
//        1010
//        1111 1111 1111 1111 1111 1111 1111 0110    //-10取反

//        10
//        10

//        0011 1111 1111 1111 1111 1111 1111 1101    //取反之后右移的,高位填充0
//        1111 1111 1111 1111 1111 1111 1111 1101    //取反之后右移的,高位填充1
    } 
}

相关文章

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • 思维导图之数据结构+算法

    数据结构+算法 = 程序 数据结构比较 参考文章 数据结构与算法数据结构与算法(java)

  • 数据结构与算法 - 树形结构

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构 目录 ...

  • 最新完整数据结构与算法

    最新完整数据结构与算法 P11_课程介绍 P22_数据结构与算法概述_数据结构 P33_数据结构与算法概述_算法 ...

  • 数据结构与算法

    数据结构与算法之美 数据结构与算法之美1--如何学数据结构与算法之美2--复杂度分析(上)数据结构与算法之美3--...

  • 算法与数据结构(1),List

    算法与数据结构(1),List 算法与数据结构(2),Map 算法与数据结构(3),并发结构 习惯了,深夜更新博客...

  • 数据结构与算法-目录

    数据结构与算法-目录 C语言篇 数据结构和算法-C语言篇1-绪论数据结构和算法-C语言篇2-初识算法数据结构与算法...

  • 算法与数据结构(3),并发结构

    算法与数据结构(1),List 算法与数据结构(2),Map 算法与数据结构(3),并发结构 本来已经合上电脑了,...

  • 算法与数据结构(2),Map

    算法与数据结构(1),List 算法与数据结构(2),Map 算法与数据结构(3),并发结构 睡了不到六个小时,被...

  • 数据结构与算法

    参考链接:算法 数据结构与算法 iOS数据结构 和 算法 上 算法 1、数据结构: 集合结构: 线性结构: 树形结...

网友评论

      本文标题:数据结构与算法

      本文链接:https://www.haomeiwen.com/subject/mqrqtrtx.html