数据结构和算法

排序算法之归并排序

大憨熊 提交于 2020-03-20 22:24:19
3 月,跳不动了?>>> 一、分治法的思想 把复杂的问题分解,再分解,成为很小的问题,解决这些小问题之后合并,再合并。这就是分治法的思想。 通常分治法是递归的。 二、归并排序 归并排序就是利用分治法,把无序的数列拆分成多个子数列,子数列再拆分成多个子数列,直至只子数列只有2个数,然后排序,合并,再排序,在合并。。。直到只剩一个有序的数列。 归并排序算法的核心就是:两个各自有序的数列合并成一个完全有序的数列。这个过程可以说很简单,就是从两个数列开头选出最小的数,放入第三个数列中,然后较小的数的指标后移,继续重复操作。直到其中一个数列全部被放入队列中,此时另一个队列剩下的全部数放入第三个数列。 归并排序的时间复杂度是O(nlgn) 如图所示: 三、Java代码实现 public class MergeSort { public static void main(String[] args) { int a[] = {5,3,2,8,7,6,10,20,30,11,22,33,44,100,60,200}; mergeSort(a, 0, a.length - 1); for (int i : a) { System.out.println(i); } } //递归拆分数列 public static void mergeSort(int[] a, int low, int high)

数据结构-08-集合(Set)-哈希表(Hash)-图(Map)

被刻印的时光 ゝ 提交于 2020-01-09 23:27:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ##Set Set 是一种用于保存 不重复元素 的数据结构。常被用作测试归属性,故其查找的性能十分重要。 Set 是python自带的基本数据结构, 有多种初始化方式。 Python的set跟dict的Implementation方式类似, 可以认为set是只有key的dict. s = set() s1 = {1, 2, 3} s.add('shaunwei') 'shaun' in s # return true s.remove('shaunwei') ##Map - 哈希表 Map 是一种 关联数组 的数据结构,也常被称为字典或键值对。 在 Python 中 dict(Map) 是一种基本的数据结构。 # map 在 python 中是一个keyword hash_map = {} # or dict() hash_map['shaun'] = 98 hash_map['wei'] = 99 exist = 'wei' in hash_map # check existence point = hash_map['shaun'] # get value by key point = hash_map.pop('shaun') # remove by key, return value keys =