首先我们一起来看一道 LeetCode 上的算法题目,Sort Colors 来自微软和 Facebook 的一道面试题。 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排 ...
首先我们一起来看一道 LeetCode 上的算法题目,Sort Colors 来自微软和 Facebook 的一道面试题。 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排 ...
在计算机科学中,并查集(Union-Find)是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。 并查集存在两个操作(1.union 联合 2.find 查找) 和一个需要解答的问题(1.isConnected 或 isSameSet 是否是相互连接,或者说是否在同一个集中) 思考几个问题 wiki 告诉我们并查集这种数据结构可以 ...
关于堆排序(HeapSort),堆这种数据结构比这种排序算法更为有价值。 > 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆 ...
首先还是得简单的介绍一下快速排序这个算法。 快速排序(Quicksort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序n个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n)算法更快,因为它的内部循环(inner loop ...
是创建在归并操作上的一种有效的排序算法,效率为O(n log n)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。(from zh.wikipedia.org) 我对归并 ...
大体含义是这样的,想我们在打扑克牌理牌时的思路一样,来一张扑克牌做一次插入操作。 20170609010214144.gif 下面我们给出普通版和优化版的插入排序 public int [] insertionSort(int [] arr){ ...
大家都知道的排序算法大概有冒泡排序、选择排序、快速排序这几种。 分享一种加深对算法理解的方法,看算法的实现过程结合算法的本质思想来理解算法,可以达到手写算法的实现效果。 冒泡排序(Bubble Sort) 先来一起看一下经典排序算法冒泡排序,冒泡排序(Bubble Sort),首先看实现过程: ![20170521215800188.gif](https://i.loli. ...