数据结构和算法
SaiW-n_n-
努力,踏实。
展开
-
排序算法
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文将依次介绍上述八大排序算法。算法一:插入排序插入排序示意图插入排序是一种最简单直观的排序算转载 2017-04-09 01:02:32 · 353 阅读 · 0 评论 -
字符串全排列算法
转载自:http://blog.csdn.net/wzy_1988/article/details/8939140#comments前言字符串的排列组合问题,困扰了我好久,递归的思想我今天一定要掌握,擦,话不多说,博客走起!问题输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,转载 2017-04-27 18:17:41 · 319 阅读 · 0 评论 -
HashMap的内部实现机制
1.HashMap的内部实现机制HashMap是对数据结构中哈希表(Hash Table)的实现, Hash表又叫散列表。Hash表是根据关键码Key来访问其对应的值Value的数据结构,它通过一个映射函数把关键码映射到表中一个位置来访问该位置的值,从而加快查找的速度。这个映射函数叫做Hash函数,存放记录的数组叫做Hash表。在Java中,HashMap的内部实现结合了链表和数组转载 2017-05-17 22:54:43 · 1082 阅读 · 0 评论 -
两个队列实现栈
为说明思想,假设队列、栈都很大,不会出现满的情况。1. 两个栈实现队列//前提已知:struct Stack{ int top; //栈顶指针 int stacksize;//栈的大小 int *s; //栈底指针};void InitStack(Stack *s);void Push(Stack *s, int k);in转载 2017-04-07 11:47:55 · 281 阅读 · 0 评论 -
hashMap线程不安全的原因及表现
hashMap出现线程不安全的原因:HashMap的实现里没有锁的机制,因此它是线程不安全的。其实只要有锁的机制,可以通过锁实现线程安全,我们在读写HashMap对象的时候加锁,以保障这个对象的线程安全,但不代表HashMap本身是线程安全的,因为是外力(你自己加的锁)使然。为啥不在HashMap内部加锁让它变成线程安全?这样会增加单线程访问的资源消耗,即使没有多线程访问,也要每次检查、加原创 2017-04-15 10:59:23 · 17763 阅读 · 3 评论 -
HashMap解决hash冲突的方法
源码分析HashMap 采用一种所谓的“Hash 算法”来决定每个元素的存储位置。当程序执行 map.put(String,Obect)方法 时,系统将调用String的 hashCode() 方法得到其 hashCode 值——每个 Java 对象都有 hashCode() 方法,都可通过该方法获得它的 hashCode 值。得到这个对象的 hashCode 值之后,系统会根据该 has转载 2017-04-15 10:42:00 · 646 阅读 · 0 评论 -
hashMap线程不安全的原因及表现-2
一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题?HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入。javadoc中关于hashmap的一段描述如下:此实现不是同步的。如果多个转载 2017-04-29 11:14:01 · 480 阅读 · 0 评论 -
HashMap和LinkedHashMap的区别联系
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap. Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取转载 2017-04-28 20:36:49 · 382 阅读 · 0 评论 -
剑指Offer(java答案)
剑指Offer(java答案)剑指Offerjava答案3二维数组中的查找4替换空格5从尾到头打印链表6重建二叉树7用两个栈实现队列8旋转数组的最小数字9斐波那契数列扩展1跳台阶扩展2变态跳台阶10二进制中1的个数11数值的整数次方12打印1到最大的n位数13在O1时间删除链表结点14调整数组顺序使奇数位于偶数前面15链表中倒数第k个结点16反转链表转载 2017-04-09 10:34:51 · 1912 阅读 · 0 评论 -
Java 集合:Collection,List,ArrayList,Vector,LinkedList(实现方式,对比)
转载自:https://yq.aliyun.com/articles/57902Collection 与 ListCollection 是 Java 集合的一个根接口,JDK 没有它的实现类。 内部仅仅做 add(),remove(),contains(),size() 等方法的声明。List 接口是Collection 接口的一个子类,在Collection 基础转载 2017-10-20 10:50:57 · 306 阅读 · 0 评论