算法
文章平均质量分 50
iteye_568
这个作者很懒,什么都没留下…
展开
-
JAVA实现顺序表
JAVA实现顺序表 花了十来分钟帮同学写了一个顺序表,顺序表是线性表中最简单的,最容易实现的。顺序表中元素在逻辑上的相邻,在物理上也是相邻的。顺序表可以用数组来实现。下面是实现 /** * 顺序表的储存结构:在逻辑上相邻的元素,他们在物...原创 2013-10-21 19:37:38 · 152 阅读 · 0 评论 -
二分搜索的递归和循环实现
二分搜索,指的是对已经排好序的数据进行搜索,也叫折半查找。下面我用递归和非递归实现了这一个算法/** * 二分搜索的递归实现 * * @param a * @param x * @return */ public int BSearch(int[] a, int x) { int left = 0, right = a.length - 1;...原创 2013-10-23 10:31:22 · 64 阅读 · 0 评论 -
归并排序的算法实现
归并排序的算法实现归并排序的基本思想是: 将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成为所要求的排好序的集合。 算法: 1.把待排序的n个记录看作长度为1的有序序列,将相邻的子序列两两归并为长度为2或1的有序序列 ...原创 2013-10-23 10:58:40 · 94 阅读 · 0 评论 -
冒泡排序
冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较冒泡的算法复杂度为:最好情况O(n)最坏情况O(n^...原创 2013-10-23 11:27:28 · 76 阅读 · 0 评论 -
快速排序思想及其算法实现
快速排序思想及其算法实现 快速排序(Quicksort)是对冒泡排序的一种改进。O(N*logN)的算法复杂度使它得到了广泛的应用。算法的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中的一部分的所有数据都比另一部分都要小,然后按此方法分别对这两部分再分别进行快速排序,这呢哥哥排序过程可以递归处理。<...原创 2013-10-23 12:46:54 · 126 阅读 · 0 评论 -
循环日赛表的分治实现
循环日赛表的分治实现 实现循环赛日程表。设 有n=2k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表: (1)每个选手 必须与其它n-1个选手各赛一次 (2)每个选手一天只能赛一场 (3)循环赛进行n-1天 基本思路: 按分治策略,将所有的的选手分为...原创 2013-10-24 01:33:07 · 132 阅读 · 0 评论 -
最大K乘积
最大K乘积的问题:在一个长度为N的数字串中插入K-1个乘号,将N分成K部分,找出一种分法,使得这K个部分的最大乘积最大。例如有一个数字串:312,当N=3,K=2时会有以下几种分法:3*12=36 31*2=62但是符合题目的是31*2=62,通过这个例子很明显的可以看出最大k乘积的问题,就是求一个数,将其分成k段,求出段相乘的最大值问题。 要求解此问题要用到动态规划...原创 2013-11-14 20:50:49 · 124 阅读 · 0 评论 -
排序算法之直接插入排序
直接插入排序(straight insertion sort)的做法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入排序属于稳定的排序,最坏时间复杂性为...2015-03-09 23:47:09 · 103 阅读 · 0 评论 -
Shell排序
shell排序又称为缩小增量排序,也是一种插入排序类的算法,但在时间上有较大的改进。 Shell排序的思路是:选定一个增量的d1<length,把全部记录按此值从第一个记录起进行分组,所有相距为d1的记录作为一组。现在各组内进行插入排序,然后减小间隔,取第二个增量d2<d1;重复上述分组和排序过程,直至增量值di=...原创 2015-03-12 01:24:20 · 133 阅读 · 0 评论