![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法/数据结构
芒果很香
漂在北京的宅女
展开
-
算法基础之排序篇-选择排序
1、算法描述 每一趟从待排序列中选择一个最小的放到待排序列的开头。 操作步骤 初始无序区R(1,n),有序区s为空 (1)、从无序区中选择一个最小的,与无序区的第一个数交换,无序区向后退1,有序区加1。 (2)、重复(1),直至无序区剩下最后一个数。 2、图例 3、代码 public vo原创 2012-08-06 11:33:12 · 569 阅读 · 0 评论 -
算法基础之递归算法
一、算法描述 直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。边界条件与递归方程是递归函数必不可少的两个要素。 二、优缺点 优点:结构清晰,可读性强,容易用数学归纳法证明。 缺点:效率低。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。 三、适用原创 2012-10-11 15:08:44 · 1120 阅读 · 0 评论 -
算法基础之排序篇
排序(Sorting)是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。 排序是算法里面最基础的东西,用到的地方很多,比如各种榜单,各类搜索等。排序的方法也很多,下面一起回顾一下一些通用的排序方法。 排序算法一般考虑 稳定性,平均时间复杂度,空间复杂度 稳定性:说一个排序是稳定的,就是当有两个有相等数a和b,且在原本的原创 2012-08-03 20:48:45 · 683 阅读 · 0 评论 -
算法基础之排序篇-拓扑排序
1、算法描述 假设G=(V,E)是一个具有n个顶点的有向图,V中顶点序列vl,v2,…,vn称做一个拓扑序列(Topological Order),当且仅当该顶点序列满足下列条件:若在有向图G中存在从顶点vi到vj的一条路径,则在顶点序列中顶点vi必须排在顶点vj之前。 操作步骤: (1)、在网络中选一个没有直接前驱的顶点,并输出。原创 2012-10-08 18:34:13 · 673 阅读 · 0 评论 -
算法基础之排序篇-希尔排序
1、算法描述 希尔排序是一种递减增量排序,当增量等于1的时候,就成了插入排序,因此希尔排序的最后一步就是普通的插入排序。 操作步骤 (1)、选择步长di(1 (2)、对每一个组进行插入排序。 (3)、递减步长,重复(1)(2),直到步长等于1原创 2012-08-15 11:20:27 · 794 阅读 · 0 评论 -
算法基础之排序篇-基数排序
1、算法描述 基数排序是根据不同位的信息将待排数据放入到特定的一些桶中,以达到排序的目的。基数排序可分为LSD和MSD。LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。 操作步骤(以LSD为例) (1)、设定10个桶,记为0-9 (2)、如果数据有小数点的原创 2012-08-14 10:33:01 · 593 阅读 · 0 评论 -
算法基础之排序篇-归并排序
1、算法描述 归并排序是将多个有序序列合并成一个新的有序序列。归并排序又分为两路归并和多路归并。下面以两路归并为例: 操作步骤 (1)、申请空间data,大小为两个待排序列大小的和,设定指针k指向空间头部 (2)、设定两个指针i,j分别指向两个待排序列(data1,data2)的头原创 2012-08-10 14:00:15 · 664 阅读 · 0 评论 -
算法基础之排序篇-堆排序
1、算法描述 利用堆(大根堆或小根堆)这种数据结构所设计的一种算法。 堆:堆是一个特定的完全二叉树,树中的任一节点的值都不大于(或不小于)其左右孩子(如果存在)节点的值。 操作步骤(以大根堆为例) 初始序列无需区R(1,n),有序区为空 (1)、对无序区建大根堆。原创 2012-08-08 20:29:54 · 893 阅读 · 0 评论 -
算法基础之排序篇-快速排序
1、算法描述 快速排序是冒泡排序的一种改进。快速排序是通过一次排序将待排序列分成两部分,一部分小于等于基准数,一部分大于等于基准数,再分别对两部分进行快速排序。 一趟快速排序的操作步骤 (1)、设置两个变量i和j,i=0,j=n-1。 (2)、以data[0]为基准数,mark=data[0] (3)、j向前搜索(j--),找到第一个小于原创 2012-08-07 17:25:21 · 610 阅读 · 0 评论 -
算法基础之排序篇-冒泡排序
1、算法描述 依次比较相邻的数剧,将小的数排前面,大的排后面。 操作步骤 (1)、从第一个元素开始,依次与后一个数比较,小数放前,大数放后,结果是最大的放到了最后。 (2)、对前n-i个数重复(1),i从1至n-2,n为原序列大小。 2、图例 3、代码 public void sort(int[]原创 2012-08-06 10:33:35 · 679 阅读 · 0 评论 -
算法基础之排序篇-插入排序
1、算法描述 下面主要讲直接插入排序 记得算法导论里面说过,插入排序就是很多人玩扑克时摸牌阶段做的事,牌堆里面的牌是没有顺序的,而手里的牌是有序的,每次摸一张牌的时候都要找一个位置插入,以保持手里牌的有序。 操作步骤 (1)、从第一个元素开始,该元素可以认为已经被排序 (2)、取出下一个元素,在已经排序的元素序列中从后向前扫描原创 2012-08-03 20:35:30 · 635 阅读 · 0 评论 -
算法基础之分治法
一、算法描述 分治法的思想是将一个难以直接解决的大问题分解成多个相同的小问题。 算法步骤: 分解:将原问题分解为若干个规模较小,相对独立,与原问题形式相同的子问题。 解决:若子问题规模较小且易于解决时,则直接解。否则,递归地解决各子问题。原创 2012-10-12 15:48:31 · 1122 阅读 · 0 评论