![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法java实现
liliugen
这个作者很懒,什么都没留下…
展开
-
线性表之堆栈的实现
[code="java"]/** * Stack.java * 线性表之栈 * 栈的特点: * 先进后出 * 即, 从头部加入(push)一个新数据 * 从头部取出(pop)一个数据 */ package line; /** * @author sunxboy * 9:59:52 AM May...原创 2009-07-17 13:50:53 · 78 阅读 · 0 评论 -
二分排序 例子
题目:一个有序的数组,里面是一万个整数。随机切分两部分,然后互换位置。求一个数的位置for example:[code="java"]int[] numbers = {92, 99,101,102,104,105,109,110,115,166,300,400,500, 1, 12, 13, 34, 35, 56, 57};[/code][code="java"]publi...2011-10-19 11:16:40 · 161 阅读 · 0 评论 -
希尔排序
希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 希尔排序基本思想: [color=red] 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2...原创 2011-10-10 15:11:19 · 72 阅读 · 0 评论 -
二分查找
二分查找又称折半查找,[color=red]优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难[/color]。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则...原创 2011-10-09 14:13:48 · 66 阅读 · 0 评论 -
快速排序算法
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。link:[url]http://baike.baidu.c...原创 2011-10-09 13:17:41 · 107 阅读 · 0 评论 -
归并排序
[url] http://baike.baidu.com/view/90797.htm[/url] [color=red] 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。[/color] 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治...原创 2011-09-30 15:01:57 · 61 阅读 · 0 评论 -
冒泡排序
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第...原创 2011-09-30 13:27:14 · 98 阅读 · 0 评论 -
选择排序
[url]http://baike.baidu.com/view/547263.htm[/url] 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。分析: 选择排序(Select Sort)算法的基本思想是:在待排序的无序数组中找出最小数(或最大数)并...原创 2011-09-30 12:55:35 · 955 阅读 · 0 评论 -
插入排序
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但...原创 2011-09-30 12:10:05 · 69 阅读 · 0 评论 -
企业牛逼面试题目 高手进来讨论答题
1.给你两个正方体同0到9十个数字,能不能组成1个月中的日期,给出理由2.你认为最快的排序的程序是什么,给出代码3.设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。...2009-08-07 17:51:59 · 68 阅读 · 0 评论 -
线性表之队列的实现
[code="java"]/** * Queue.java * 线性表之队列 * 队列有如下特点: * 先进先出 * 即,从尾部添加(push)新数据 * 从头部取出(pop)数据 */ /** * 队列(Queue)也是一种运算受限的线性表。 * 它只允许在表的一端进行插入,而在另一端进行删...原创 2009-07-17 14:15:59 · 117 阅读 · 0 评论 -
线性排序的实现
[code="java"]/** * 线性表 */ package line; /** * @author sumbeam * */ public class LineSort { // 数据结构 private int data[]; // 最大容量 ...原创 2009-07-17 14:11:40 · 71 阅读 · 0 评论 -
bitmap思想及其在java中的相关实现
先看一个题目:给你一堆西安市的电话号码列表,数量大概在千万级,要求从中找出所有重复的电话号码,需要时间复杂度尽可能小。目前西安市的电话号码大概都以8开头,为8位,也就是类似于82678578这样子二重暴力搜索时间复杂度太高,这里我们不予考虑。容易想到的办法就是建立一个标志数组,int boolean都行,用相应的位置值来代替这个号码是否出现,...原创 2011-10-21 10:51:07 · 112 阅读 · 0 评论