摘要:
针对直接插入排序的改进 缩小增量排序 不稳定 现将待排序序列恩城多个子序列进行直接插入排序,待整个序列基本有序时,再对整个序列进行直接插入排序 子序列不是简单地逐段分割,而是将相隔某个增量的关键字组成一个子序列,在一趟排序完成之后,缩小增量,直到增量为1(即为一次针对所有关键字的直接插入排序) 增量 阅读全文
2018年8月29日
摘要:
稳定 基于移动元素 适合于元素个数较少,基本有序的情况 将关键字序列的第一个关键字看成一个有序的序列,然后将第二个插入到有序序列的合适位置,此时,有序序列长度加一 一次将后面的关键字插入到有序子序列的合适位置,使得有序子序列的长度递增,直到待排序序列的元素插入完 最好:待排序序列有序 O(n) 最坏 阅读全文
摘要:
基于交换的排序、不稳定的排序 对冒泡排序的改进 通过一趟排序,将待排关键字分为两部分,其中一部分的全部关键字都小于另一部分的全部关键字,然后分别对这两部分进行快速排序,可以选取第一个关键字为基准,将比它小的放在它之前,将比它大的放在它之后,完成这一趟之后,基准所在的位置就将初始序列分成两部分(一部分 阅读全文
摘要:
基于交换的排序、稳定的排序 第一趟:对所有n个元素,从第一个元素开始,比较相邻的两个元素,如果逆序,调换;在第一轮比较完之后,最大(小)的元素就会在最后一个位置 第二趟:对前n-1个元素,从第一个元素开始,比较相邻的两个元素,如果逆序,调换,在第二轮比较完之后,第二大(小)的元素就会在倒数第二位置 阅读全文
2018年8月28日
2018年8月27日
摘要:
0.底层实现加了红黑树 数组+链表(链表长度超过阈值,默认8-->红黑树) HashMap在进行put get remove的时候,都是先计算hash,然后根据hash定位桶的位置(table[]的下标),桶中是hash值冲突的键值对组成的链表,然后遍历该链表进行相应的操作,当冲突很多时,遍历链表效 阅读全文
2018年8月26日
摘要:
java.util.concurrent.ConcurrentHashMap<K, V> public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>, Serializab 阅读全文
摘要:
java.util.HashMap<K, V> public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable 数组+链表 HashMap中有一个Entry<K,V>[]数组, 阅读全文
摘要:
0.出现时间? HashMap是jdk1.2 Hashtable是jdk1.1 HashMap出现得晚 1.线程安全? HashMap线程不安全 Collections.synchronizedMap(map); Hashtable线程安全 synchronized 2.null key? Hash 阅读全文