算法
学了吗
敏于思辨,成于方略
展开
-
冒泡排序及优化
冒泡排序(相邻比序法):对相邻元素进行交换,把值大的元素交换到右边(降序则交换到左边)【算法描述】 假设有一个长度为n的数组:从第一个元素开始,比较前后相邻的二个元素,如果前面元素...原创 2018-03-29 19:21:42 · 123 阅读 · 0 评论 -
算法时间复杂度和空间复杂度
1.时间复杂度(1)语句频度 是指该语句在一个算法中重复执行的次数。一个算法的时间耗费就是该算法中所有语句频度之和,用f(n)表示。(2)时间复杂度 对于算法分析,关心的是算法中语句总的执行次数f(n)是问题规模n的函数, 进而分析f(n)随n的变化情况并确定T(n)的数量级。用“O”(起初是希腊字母,后多为英语字母)表示数量级,算法的时间复杂度T(n)=O(f(n))是该算...原创 2018-03-29 19:42:39 · 2952 阅读 · 0 评论 -
快速排序
【算法描述】从待排序的序列中选取一个元素(通常选第一个)记为temp,小于temp的元素把它移到K的前面,大于temp的元素移到K的后边K把这个序列分割成了两部分,然后分别再对这两个序列进行同步骤一的操作重复步骤二,直到子序列长度不大于1,这时整个序列便是有序的了【算法实现】public class Sort { public static int quickSort(int[] r, int...原创 2018-04-07 20:48:21 · 133 阅读 · 0 评论 -
直接插入排序
【算法描述】 直接插入排序是一种最基本的插入排序方法。其实就是将第i个元素插入到前面i-1个已经排好序的元素中。这个可以类比我们打扑克牌时整理牌的过程,都是将每一张牌插入到其他已经有序的牌中适当位置 当前索引左边的所有元素都是有序的,但是它们的最终位置还不确定,为了给更小的元素腾出空间,它们会被移动。但是当索引到达数组的右端时,数组排序就完成了【算法实现】public class...原创 2018-04-08 21:25:53 · 250 阅读 · 0 评论 -
希尔排序
【算法描述】 希尔排序是基于直接插入排序的算法。直接插入排序是交换相邻的元素,如果最小元素正好在数组的最后,那么将它移到正确位置需要n-1次移动,希尔排序则是交换不相邻的元素,这样就可以减少移动次数首先将序列中所有相距为h1的元素分成一组,进行直接插入排序然后将相距为h2(h2<h1)的元素分为一组进行插入排序重复进行步骤二,直到h=1这个距离h的选取是会影响排序的移动次数的,但是现在并不...原创 2018-04-12 09:17:31 · 152 阅读 · 0 评论 -
树形选择排序
【算法描述】 树形选择排序也叫锦标赛排序,我们可以类比比赛过程。有n个待排序的元素,把它们两两一组进行比较,取出较小的,然后在这n/2个较小者中再两两一组进行比较,取出较小的,重复上述步骤,直到取出最小元素。 这个过程用一棵满二叉树表示,在选出最小关元素后,将这个元素对应的叶子节点的值置为∞,然后把不为∞的兄弟节点移到父节点的位置。一直重复这个过程就可以了 【算法实现...原创 2018-04-05 00:10:44 · 7578 阅读 · 1 评论 -
堆排序
堆:堆是一棵完全二叉树,某个节点的值总是不大于(称为大根堆)或不小于其父节点(称为小根堆)的值。【算法描述】将待排序的n个元素按照堆的定义建初堆,并移除堆顶元素调整剩余的元素序列(也就是去掉了堆顶元素的序列),将这n-1个元素重新建成一个新堆,再移除堆顶元素重复执行步骤二,进行n-1次筛选,新筛选的堆会越来越小,最后所有的堆顶元素都会被移除,被移除的堆顶元素就是一个有序序列 这个...原创 2018-04-06 21:13:27 · 401 阅读 · 0 评论 -
归并排序
【算法描述】假设初始序列有n个元素,先把这n个元素看成是n个长度为1的有序子序列然后将这n个序列两两归并,得到[n/2]个长度为2的有序子序列(n为奇数时,最后一个序列大小为1)再将长度为2的序列两两归并,得到若干长度为4的有序子序列,如此重复,直到子序列长度为n归并算法基于合并,即将两个有序的数组合并成一个更大的有序数组【算法实现】public class Sort { static int[...原创 2018-04-19 21:18:29 · 215 阅读 · 0 评论 -
图的深度优先搜索
【算法描述】从图中s点出发,并将这个点标记为已访问找到s的一个相邻点v,将这个点v标记为已访问找v的相邻点w,如果w存在且未被标记,就将w标记为已访问,如果w点不存在,就返回v点,再找v的另一相邻点直到图中所有点都被标记为已访问为止对于这样上图,我们可以采用邻接矩阵来表示,构建一个5x5的矩阵跟顶点0相邻的顶点有2,3,4,所以在矩阵中[0,2],[0,3],[0,4]都用T标记【算法实现】pub...原创 2018-07-09 15:03:37 · 186 阅读 · 0 评论