算法(第四版)c++实现
赵沐8
大三狗,学习中
展开
-
快速排序
快速排序是使用最多的排序方式,其复杂度为1.39NlogN,略高于归并排序,但是由于其移动次数少且不需要,所以一般情况下快速排序会更快。 快速排序原理是将数组第一个元素作为切分元素,比其小的元素排在其左侧,比其大的元素排在其右侧,然后再分别对其两侧的子数组进行切分,最终得到排好序的数组。 三项切分的快速排序则是在快速排序的基础上将与切分元素相等的所有元素找到并与原创 2016-11-02 19:11:04 · 325 阅读 · 0 评论 -
算法合集——并查集union-find
并查集算法主要分为quic-find, quick-union以及union-find方法。但出于效率考虑,一般使用union-find算法进行实际操作。 union-find算法的思想就是利用一个数组id[]记录每个节点的父节点,例如现要将节点1(id[1] = 1)连接到节点2(id[2] = 2),则令id[1] = 2即可;同时,若节点为根节点,则令其id值等于其自身。通原创 2016-10-30 22:06:19 · 360 阅读 · 0 评论 -
归并排序
归并排序的思想是将大数组细分成一个个小数组(甚至可以使小数组只包含一个元素),然后对小数组不断进行归并,从而得到排好序的大数组。 归并排序是基于比较的排序方式中的最优解,主要分为两种:自上而下和自底向上。两种排序方式的复杂度均为N*logN,较之初级排序方法的N^2大大提速,可以处理上百万个元素的数组,但是在解决小数组(元素数小于15)排序时,插入排序方法更快。原创 2016-11-01 00:46:27 · 271 阅读 · 0 评论 -
初级排序方法——选择、插入、希尔排序
初级排序方法是最基本的排序方法,主要包括选择排序、插入排序以及希尔排序。 选择排序的原理是通过比较整个数组,找到最小值,然后将最小值与数组中第一个位置的数字进行交换,依靠循环来完成对整个数组的排序。对于一个由N个元素组成的数组,这种方法进行(N^2)/2次比较和N次交换,并且无论输入是什么情况,其比较和交换次数不变。 插入排序的原理则是比较该元素与其之前元素的大原创 2016-10-31 22:02:12 · 280 阅读 · 0 评论