
数据结构
Turing·
不积小流无以成江海
展开
-
redis zset利用并集求差集
我的需求是需要它做差集(总的内容缓存差用户已看的缓存)就能得到用户没有看的,也就是接下来要给用户看的内容我的思路是利用并集操作完成。它俩一并集操作,凡是相同的ID分数就会叠加并出来的结果正负一抵消就变成0了,然后我把小于等于0的都删掉就求出并集了。内容的缓存池value当成是内容的ID,score当成权重要以这个降序排序返回给用户(每次五条)解决的痛点是缓存里的数据结构zset有序集合,它只能做并集、交集不能做差集。.........原创 2022-07-25 01:15:30 · 1559 阅读 · 0 评论 -
Trie前缀树
class Trie { private Trie[] children; private boolean isEnd; public Trie() { children = new Trie[26]; isEnd = false; } public void insert(String word) { Trie node = this; for (int i = 0; i < word...原创 2021-12-28 23:00:07 · 288 阅读 · 0 评论 -
冒泡排序
原理:整个过程就像气泡一样往上升,单向冒泡排序的基本思想是:对于给定的n个数据,从第一个记录开始依次对相邻的俩个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行一轮比较和换位后,n个记录的最大值将位于第n位,然后对前(n-1)个记录进行第二轮比较,重复该过程,直到记录只剩下一个为止。ps:这是我记住的第一个排序算法。俩种方法:package 冒泡排序;public c...原创 2019-08-30 14:42:36 · 117 阅读 · 0 评论 -
归并排序,快速排序,希尔排序
归并排序原理:利用递归和分治技术将数据序列划分为越来越小的半子表,再对半子表排序,最后再用递归方法将排好序的半子表合并成为越来越大的有序序列。划分半子表 合并半子表快速排序原理:采用分而治之的思想,把大的拆分成小的,再把小的拆分成更小的。给定一组记录,通过一趟排序后,将原序列分为俩部分,其中前一部分的所有记录均比后一部分的所有记录小,然后再依次对前后俩部分的记录进行快速排序,...原创 2019-08-31 13:44:05 · 117 阅读 · 0 评论 -
堆排序
堆是一种特殊的树形结构,其每个结点都有一个值,通常提到的堆都是指一颗完全二叉树,根节点的值小于(或大于)俩个子节点的值,同时根结点的俩个子树也分别是一个堆。堆排序是一种树形选择排序,在排序过程中,将R[1....n]看作一颗完全二叉树的顺序存储结构,利用完全二叉树中父结点和结点之间的内在关系来选择最小的元素。堆一般分为大顶堆(堆顶最大值)和小顶堆(堆顶最小值)俩种不同的类型。...原创 2019-09-01 21:01:35 · 110 阅读 · 0 评论 -
堆(java实现)
(因为这是按照自己的思路实现的,代码有点臃肿,后续会对代码进行优化)堆的创建 public static int[] createHeap(int a[]) { int temp = 0; //求深度 int depth = 0; int n = a.length; while (n>=1) { n = n/2; depth++; } Sys...原创 2019-09-02 17:33:59 · 930 阅读 · 0 评论 -
位运算
用移位操作实现乘法运算package bit_operation;public class MultiPlication { //用移位操作实现乘法运算 //m*2^n public static int power(int m,int n){ for(int i = 0;i<n;i++){ m = m<<1; } return m; } p...原创 2019-09-03 15:24:52 · 145 阅读 · 0 评论 -
数组(算法题)(1)
package com.qyc.arrays;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import org.junit.Test;import org.omg.CORBA.PUBLIC_MEMBER;public class Arrays_operation { // 1....原创 2019-09-05 13:38:38 · 271 阅读 · 0 评论 -
数组(算法题)(2)
// 用递归求数组中最大的元素 public static int max(int a, int b) { return a > b ? a : b; } public static int maxnum(int a[], int begin) { int length = a.length - begin; if (length == 1) { return ...原创 2019-09-06 15:20:10 · 283 阅读 · 0 评论 -
字符串(算法题)
实现字符串的反转package com.qyc.stringArithmetic;public class String_Arithmetic { //实现字符串的转 public void swap(char[] a,int i,int j) { while (i<j) { char temp = a[i]; a[i] = a[j]; a[j] = te...原创 2019-09-09 22:15:14 · 149 阅读 · 0 评论 -
DFS深度优先遍历
按要求打印数组的排列情况要求:“4”不能在第三位,“3”,“5”不能相连 //DFS深度优先遍历 打印数组的排列情况 4不能在第三位,3,5不能相连package com.qyc.stringArithmetic;import java.util.Arrays;import java.util.HashSet;import java.util.Iterator;import ...原创 2019-09-10 15:39:13 · 131 阅读 · 0 评论 -
二叉树(java实现)
二叉树基本概念:二叉树也称为二分树,二元树,对分数等,当集合为空时,该二叉树被称为空二叉树。结点的度:结点所拥有子树的个数称为该结点的度。叶结点:度为0的结点称为叶结点,或称为终端结点。分支结点:度不为0的结点,或者称为非终端结点,一颗的结点除了叶结点外,其他的都是分支结点。左孩子,右孩子,双亲:书中一个结点的子树称为这个结点的双亲,具有同一个双亲孩子结点胡成为兄弟。...原创 2019-09-10 17:01:29 · 171 阅读 · 0 评论 -
海量数据处理
海量信息,即大规模数据。随着互联网技术的发展,信息越来越多,从中提取有用信息成为当前互联网技术发展必须要面对的问题。基本方法:1.Hash法Hash一般称为散列,他是一种映射关系,给定数据元素,其关键字为key,按一个确定的散列函数计算出hash(key),把hash(key)作为关键字key对应元素的存储地址(或称为散列地址),再进行数据元素的插入和检索。简而言之,散列函数就是一种将...原创 2019-09-11 16:09:46 · 150 阅读 · 0 评论 -
插入排序
原理:对于给定的一组记录,初始时假设第一个记录自成一个有序的序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列为止。InsertSortpackage 插入排序;public class InsertSort { public void insertSort(int a[]) { if...原创 2019-08-30 14:09:27 · 102 阅读 · 0 评论 -
选择排序
原理:对于给定的一组记录,经过一轮比较后得到最小的记录,然后将该记录与第一个记录进行交换;重复操作,直到进行比较的记录只有一个时为止。注意:程序里要有判断是否是最大值,否则第一个会成为最大值SelectSortpackage 选择排序;public class SelectSort { public void sort(int a[]) { for (i...原创 2019-08-30 13:30:11 · 105 阅读 · 0 评论 -
对列(java实现)
Nodepackage com.qyc.Queue;public class Node<E> { Node<E> next = null; E date; public Node(E date) { // TODO 自动生成的构造函数存根 this.date = date; }}MyQueuepackage com.qyc.Queu...原创 2019-08-29 22:11:14 · 288 阅读 · 0 评论 -
数据结构(串)
串的概念(string)由零个或多个字符串组成的有序序列,又名叫字符串串中字符数目n称为串的长度 零个字符的串称为空串 字符的表示计算机中常用的字符是由ASCII编码 开始是由7位二进制数表示一个字符,总共可表示128个字符 后来由于特殊符号的出现,扩展了ASCII码,由8位二进制数表示一个字符,可以表示256个字符 后来又有了Unicode码,比较常用的是16位二进制...原创 2019-04-04 11:26:40 · 250 阅读 · 0 评论 -
数据结构(基本概念和术语)
程序=数据结构+算法数据结构数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科逻辑结构(面向问题)是指数据对象中数据元素之间的相互关系集合结构 线性结构 树形结构 图形结构物理结构 (面向计算机)是指数据的逻辑结构在计算机中的存储形式顺序(地址连续)...原创 2019-04-02 12:27:55 · 536 阅读 · 0 评论 -
数据结构(算法)ps如果有新内容会补充
算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。特性:输入 输出 有穷性 确定性 可行性算法设计要求正确性 可读性(算法设计的另一目的是为了便于阅读,理解和交流) 健壮性(当输入数据不合法时,算法也能做出相应处理,而不是产生异常或者莫名其妙的结果)适用于高级算法,像蓝桥杯竞赛还没这么要求过 时间效率高(利...原创 2019-04-02 14:19:15 · 508 阅读 · 0 评论 -
数据结构(线性表)
线性表(List):零个或多个数据元素的有限序列在复杂的线性表中,一个数据元素可以有若干个数据项组成。线性表的顺序存储结构:指的是用一段地址连续的存储单元存储线性表的数据元素。数据长度与线性表长度的区别数组长度是存放线性表的存储空间长度,存储分配后这个量一般不变 线性表长度是线性表中数据元素的个数,随着线性表的插入和删除,这个量是变化的 在任意时刻线性表的长度应该小于数组...原创 2019-04-02 20:24:52 · 226 阅读 · 0 评论 -
数据结构(树)
定义:树是n(n>=0)个结点的有限集。n=0时为空树,在任意一棵非空树中:(1)仅有一个特定的根(root)的结点(2)当n>1时,其余结点可分为m(m>0)个相互不相交的有限集T1....Tn,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)结点的分类度(Degree)结点拥有的子树数称为结点的度 度为0的结点称为叶结点(Leaf)...原创 2019-04-08 19:04:18 · 290 阅读 · 0 评论 -
数据结构(栈)
定义栈是限定仅在表尾进行插入和删除的线性表队列是只允许在一端进行插入在另一端进行删除操作的线性表。栈允许插入和删除的一端称为栈顶(top),另一端称为栈底(buttom),又称先进后出的线性表(Last In First Out)就像手枪的弹夹源码(基于线性表)还有基于数组的那就比较简单,这里就不说了#include"iostream"#include"std...原创 2019-04-03 18:42:08 · 186 阅读 · 0 评论 -
数据结构算法题汇总
1. 在计算机中,算法是指什么?答案:解题方案的准确而完整的描述。2. ,算法的四个基本特征是?说明:可行性、确定性、有穷性和输入输出。3. 算法一般都可以用哪几种控制结构组合而成?答案:顺序、选择、循环。4. 算法的时间复杂度是指?答案:算法执行过程中所需要的基本运算次数。5. 算法的空间复杂度是指?答案:执行过程中所需要的存储空间。6. 算法分析的目的是?答案:...原创 2019-04-13 19:40:07 · 17663 阅读 · 0 评论 -
数据结构(查找)
1.顺序查找在两种情况下只能用顺序查找:线性表为无序表、链式存储结构的有序表2.二分查找只适用于顺序存储的有序表(从小到大)。对于长度为N的有序线性表,在最坏情况下,二分查找只需要比较log2N次,而顺序查找要比较N次。...原创 2019-04-13 19:45:24 · 556 阅读 · 0 评论 -
数据结构(排序)
排序:指将一个无序序列整理成按值非递减顺序排列的有序序列。排序种类 排序方法 说明 交换排序 冒泡排序 最简单的交换排序。在待排序的元素序列基本有序的前提下,效率最高 快速排序 插入排序 简单插入排序 每个元素距其最终位置不远时适用 希尔排序 选择排序 简单选择排序 堆排序 适用于较大规模的...原创 2019-04-13 20:00:34 · 257 阅读 · 0 评论 -
链表(Java实现)去重,查找,反转等
Node 结构package com.qyc.LinkedList;public class Node { public Node next = null; public int date; public Node(int date) { // TODO 自动生成的构造函数存根 this.date = date; }}MyLinkedList 功能pac...原创 2019-08-27 21:18:00 · 438 阅读 · 0 评论 -
栈(java实现)
Nodepackage com.qyc.Stack;public class Node<E> { Node<E> next = null; E date; public Node(E date) { super(); this.date = date; } }Stackpackage com.qyc.Stack;public c...原创 2019-08-29 21:49:47 · 136 阅读 · 0 评论 -
数据结构(队列)
队列是只允许在一端进行插入操作,在另一端进行删除操作的线性表。先进先出(First in First out)循环队列的结构struct SqQueue{ int data[MAXSIZE]; int front; //头指针 int rear; //尾指针};初始化void Initqueue(SqQueue Q){ Q->f...原创 2019-04-03 22:08:47 · 184 阅读 · 0 评论