算法
文章平均质量分 64
cyhgogogo
这个作者很懒,什么都没留下…
展开
-
算法的时间复杂度
时间复杂度 时间频率 一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为时间频度。记为T(n)。 时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。 一般情况下,算法中基本操作重复执行的次...原创 2018-09-04 15:43:04 · 10797 阅读 · 3 评论 -
Java-合并排序(归并排序)算法
基本思想:合并排序(归并排序)算法是用分治策略实现对n个元素进行排序的算法。其基本思想是:将待排序元素分成大小相同的2个集合,分别对2个集合进行排序,最终将排好序的子集合合并为所要求的排好序的集合。分治策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之) 图解分析:合并相邻有序...原创 2018-09-18 15:39:37 · 2087 阅读 · 0 评论 -
堆排序(heapSort)
堆:堆是具有以下性质的完全二叉树:每个结点都大于或等于它的左右子结点,称为大顶堆;每个结点都小于或等于它的左右子结点,称小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子该数组从逻辑上讲就是一个堆结构,我们用简单的公式来描述一下堆的定义就是:大顶堆:arr[i] >= arr[2i+1] && arr[i...原创 2018-10-13 16:50:57 · 159 阅读 · 0 评论 -
快速排序(quickSort)
基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。算法步骤: 对左右区间重复上述,直到各区间只有一个数例子:代码实现:package SortType;import...原创 2018-10-12 17:24:44 · 1327 阅读 · 0 评论 -
插入排序(insertSort)
算法分析:插入排序算法有种递归的思想在里面,它由N-1趟排序组成。初始时,只考虑数组下标0处的元素,只有一个元素,显然是有序的。然后第一趟 对下标 1 处的元素进行排序,保证数组[0,1]上的元素有序;第二趟 对下标 2 处的元素进行排序,保证数组[0,2]上的元素有序;..........第N-1趟对下标 N-1 处的元素进行排序,保证数组[0,N-1]上的元素有序,也就是整个数...原创 2018-10-12 15:27:29 · 350 阅读 · 0 评论 -
选择排序(selectSort)
原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。简单选择排序的基本思想:给定数组:int[] arr={里面n个数据};第1趟排序,在待排序数据arr[1]~arr[n]中选出最小的数据,将它与arrr[1]交换;第2趟,在待排序数据arr[2]~arr[n]中选出最小的数据,将它与arr[2]交换;以此类推,第i趟在待排序数据arr[i]...原创 2018-10-12 14:07:52 · 258 阅读 · 0 评论 -
二分查找(binary search)
概念:1.二分查找又称折半查找,它是一种效率较高的查找方法。2.二分查找要求:(1)必须采用顺序存储结构 (2).必须按关键字大小有序排列3.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前 面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继...原创 2018-10-11 21:43:33 · 328 阅读 · 0 评论 -
矩阵连乘-动态规划
动态规划的基本思想将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,让以后再次遇到时直接引用答案,不必重新求解。问题描述: 给定n个矩阵:A1,A2,...,An,其中Ai与Ai+1是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连...原创 2018-11-03 14:19:57 · 303 阅读 · 0 评论