
算法
文章平均质量分 70
dancheren
这个作者很懒,什么都没留下…
展开
-
排序算法应用-查找无序数组中第前k个小数
最小的k个数,输入n个整数,找出其中最小的k个数,例如输入4、5、1、6、2、7、3、8、1、2,输出最小的4个数,则输出1、1、2、2。此题可以用快速排序的思想来做,快速排序过程中,我们是用分治的思想,这道题我们用减治的思想,分治是将一个大问题分解成多个子问题,最后再把多个字问题合并后才能得到结果,而减治的思想就是将大问题分解城多个字问题,最后不用合并子问题就能得到结果,快速排序跟二原创 2017-03-09 22:25:30 · 801 阅读 · 0 评论 -
插入排序
插入排序的思想: 每趟将一条待排序的记录,按其关键字值的大小插入到前面已经排好序的记录中的适当位置,直到全部记录插入完成排好序为止。直接插入排序的基本要求是,假设待排序的记录存放在r[0,1....n-1]中,开始时先将第0个记录组成一个有序的子序列,然后依次将后面的记录插入到前面排好序的子序列中,并且一直保持子表的有序性。 假设一组待排序的记录关键字序列为 {39,67原创 2017-05-11 16:53:10 · 332 阅读 · 0 评论 -
选择排序
直接选择排序的基本思想是:第1趟中,从n个记录中选择出古按键自最小的的记录与第一个记录交换位置;第2趟中,从第二个记录开始的n-1个记录中找出关键字最小的记录与第二个记录交换;以此类推,在第i趟中找出从第i个记录开始的n-i+1个记录中选出关键字值最小的记录与第i个记录交换,直到整个记录排好序为止。假设有待排序的8个记录的关键字序列为{52,39,67,95,70,8,95,25}:原创 2017-06-02 15:48:19 · 490 阅读 · 0 评论 -
冒泡排序
冒泡排序属于交换排序算法,交换排序算法的思想是两两比较待排序记录的关键字,若两个纪录的次序相反则交换这两个记录,直到没有反序的记录为止。冒泡排序的基本思想是将待排序的数组看成从上到下排放,把关键字较小的记录看成“较轻的”,关键字值较大的记录看成“较重的”,较小记录好像水中的气泡向上浮,较大记录像水中的石块向下沉,当所有气泡按照关键字大小浮到相应位置时,并且所有的石块都沉到水中时,排序就原创 2017-06-02 16:39:10 · 664 阅读 · 0 评论 -
快速排序
快速排序也是交换排序的一种。快速排序的基本思想是,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。假设待排序的记录序列为{r[low],r[low +1 ],r[low +2],.....r[high]},首先在该序列中任意选择一个记录(该记录成为支点,通常选r[low]作为支点),然后原创 2017-06-02 17:47:28 · 525 阅读 · 0 评论 -
堆排序
不得不说,堆排序太容易出现了,选择填空问答算法大题都会出现。建堆的过程,堆调整的过程,这些过程的时间复杂度,空间复杂度,以及如何应用在海量数据Top K问题中等等,都是需要重点掌握的。1)算法简介 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的转载 2017-06-02 21:36:21 · 530 阅读 · 0 评论 -
归并排序
1)算法简介 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳定的排序方法。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。2)算法描述转载 2017-06-02 22:36:38 · 889 阅读 · 0 评论 -
编程题Tip
字符串中的回文串问题:一、字符串是否为回文串public class HuiWenTest { /** * @SERLIN 将字符串倒置后逐一比较 */ public static void main(String[] args) { String str = ""; System.out.println("请输入一个字符串"); Scan原创 2017-06-19 09:56:05 · 304 阅读 · 0 评论