随笔分类 -  学习5:数据结构与算法

摘要:一.二分查找 1.非递归实现 索引 while left<=right 1 public static int binarySearch(int[] arr,int key) { 2 int left=0; 3 int right=arr.length-1; 4 while(left<=right) 阅读全文
posted @ 2021-08-27 15:44 midiyu 编辑
摘要:排序方法 O(平均) O(最坏) O(最好) 空间复杂度 稳定性 冒泡 O(n2) O(n2) O(n) O(1) 稳定 选择 O(n2) O(n2) O(n2) O(1) 不稳定 插入 O(n2) O(n2) O(n) O(1) 稳定 希尔 O(n1.3) O(n2) O(n) O(1) 不稳定 阅读全文
posted @ 2021-08-25 15:20 midiyu 编辑
摘要:分类:毛选入耳块归队,计数,桶,基数 一.冒泡排序:BubbleSort (1)普通版 i:1~n,j:0~n-i 1 public void bubbleSort(int[] array) { 2 for(int i=1;i<array.length;i++) 3 for(int j=0;j<ar 阅读全文
posted @ 2021-08-20 23:37 midiyu 编辑
摘要:1.定义:哈希表是一种根据关键字(key)的值直接进行访问的数据结构。 关键字的值就是数组的索引下标 用法:(1)可以快速的判断某个元素是否出现在集合里(HashSet) (2)通过key可以高效的查到所匹配的value(HashMap) 哈希表中存放的是键值对 2.哈希函数:哈希函数可以将关键字转 阅读全文
posted @ 2021-08-20 18:25 midiyu 编辑
摘要:一.String的构造方法 1.String str="hello" String str=""; 2.String str=new String("hello") String str=new String(char[] value) 二.操作 基本,转换,判断,替换,分割(急转盘提分) 1.基本 阅读全文
posted @ 2021-08-17 16:43 midiyu 编辑
摘要:一种数据结构:定义,构建,操作 我们就希望一种数据结构能同时具备数组查找快的优点以及链表插入和删除快的优点,于是 树 诞生了。 一.基本概念: 分类:普通二叉树,满二叉树,完全二叉树。二叉查找树(平衡二叉查找树(AVL树),红黑树)。二叉堆。优先队列 平衡二叉树和平衡二叉查找树得区分一下 1.定义: 阅读全文
posted @ 2021-08-16 23:51 midiyu 编辑
摘要:1.定义:方法调用自身。递归算法可以缩小规模,递归方法调用自身,但是参数不一样。递归可以用循环(递推,迭代)或者栈来代替 2.递归三要素:边界条件,递归关系式,参数返回值(递归方法,参数不一样) 3.递归算法的时间复杂度 (1)递归算法的时间复杂度= 递归的次数 * 每次递归的时间复杂度 递归次数和 阅读全文
posted @ 2021-08-16 20:39 midiyu 编辑
摘要:1.初始时:front=0,rear=0。rear指向队尾元素的下一个位置 2.分类: (1)单端队列(循环队列)(queue) (2)双端队列:判断回文串(deque) (3)优先级队列 共同点:只有一个数据项可以被访问 3.优先级队列 (1)定义:优先级队列(priority queue)是比栈 阅读全文
posted @ 2021-08-16 19:24 midiyu 编辑
摘要:1.特点:先进后出 2.操作:入栈:push(),出栈:pop()。大小:size() 注意点:初始时top=-1,入栈:++top,出栈:top-- 3.应用 (1)分隔符匹配问题 利用栈判断分隔符是否匹配 1 public static void testMatch() { 2 LinkedLi 阅读全文
posted @ 2021-08-16 17:13 midiyu 编辑
摘要:数据结构:数组,链表,栈,队列。哈希表。树:二叉树,堆,多路查找树。图 ADT:在数据结构上添加了操作,就是ADT 一.数组 1.特点:查找块(随机访问块),增删慢 链表:查找慢,增删块 2.用数组实现实现的ADT其实叫:顺序表(ArrayList) 3.用数组来实现数据结构(包括查增删改,遍历,扩 阅读全文
posted @ 2021-08-16 15:10 midiyu 编辑
摘要:一.时间复杂度 O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(2n) < O(n!) O(m+n),O(m*n) 二.算法时间复杂度分析 (1)O(logn) for(int i=1,i<=n;i=i*2) //i按2的幂(1,2,4,8)递增 count 阅读全文
posted @ 2021-08-15 13:18 midiyu 编辑
摘要:哈希表(hash table)1.原理:存的时候按照key来存,取得时候按照key来取2.底层实现:数组3.关键:(1)哈希函数 hash=h(key):实现key和数组下标的转换 哈希函数 key >hash值 (hash值就是entry存放的地址)设计哈希函数的方法有:直接定址法,除留余数法,数 阅读全文
posted @ 2021-08-09 20:54 midiyu 编辑

点击右上角即可分享
微信分享提示