一、算法思想描述1)令i = L,j = R,将基准数挖出形成第一个坑(基准数可以选择第一个位置上的数作为基准数,也可以选择其他位置上的数作为基准数)。2)j-- 。从后往前扫,找到第一个比基准数小的数。并将其“挖出”,填到上一个形成的坑中arr[i]3)i++ 。 从前往后扫,找到第一个比基准数大的数。并将其“挖出”,填到上一个形成的坑中arr[j]4)不断地重复2)、3)直到i == j,...
分类:
其他好文 时间:
2014-05-22 06:48:32
阅读次数:
208
1、算法思想描述: 1)将相邻的两个数进行比较,如果前面的一个大于后面的一个,则将他们交换。每次循环能使一个数达到有序状态。2、时间复杂度: 平均O(n^2)3、实现及优化。以下给出三种实现方式/*
* bubblesort.cpp
*
* Created on: 2014年5月17日
* Author: pc
*/
#include
#include
#inc...
分类:
其他好文 时间:
2014-05-18 15:34:55
阅读次数:
198
二分查找又称折半查找,它是一种效率较高的查找方法。折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。
折半查找是一种高效...
分类:
编程语言 时间:
2014-05-16 07:10:02
阅读次数:
329
贪心法理解
贪心法在解决问题的策略上目光短浅,只根据当前已有的信息就做出选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。换言之,贪心法并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优。
一句话:不求最优,只求可行解。
判断贪心法
对于一个具体的问题,怎么知道是否可用贪心算法解此问题,以及能否得到问题的最优解?
我们可以根据贪心法的2个重要的...
分类:
其他好文 时间:
2014-05-16 01:27:39
阅读次数:
306
桶排序是一种效率很高的排序算法,它的时间复杂度为O(n),但桶排序有一定的限制,只有当待排序序列的元素为0到某一确定取值范围的整数时才适用,典型的例子比如成绩的排序等。
算法思想: 设待排序序列的元素取值范围为0到m,则我们新建一个大小为m+1的临时数组并把初始值都设为0,遍历待排序序列,把待排序序...
分类:
其他好文 时间:
2014-05-13 21:23:40
阅读次数:
351
Graham计算点集凸包是一种常用的方法,本文详细介绍了其算法思想及代码实现。
分类:
编程语言 时间:
2014-05-12 21:49:03
阅读次数:
560
中文分词算法在前两篇文章中介绍了正向最大匹配算法和逆向最大匹配算法
本篇文章主要介绍最少单词数算法。顾名思义,就是最少的单词数。
算法思想是首先查找词典中最长的单词,匹配看是不是所要分词的字符串的子串,如果是则就是分词的词,迭代以上结果,每次都会在字符串中最长的单词分词,就可以得到最少的单词数
不多说了 直接上代码:
package com;
import java.ut...
分类:
其他好文 时间:
2014-05-08 05:05:21
阅读次数:
380
问题:如何将一个数组循环左移或者右移k位?
在下面的解决方案中,我们以循环左移为例。 我们最容易想到的是,将前k个元素复制到一个临时的数组中,然后将剩下的n-k个元素向左移动k个位置,然后将之前的k个元素复制到剩下的位置。这种方法使用了k个额外的存储空间。我们想到到另一种方法是,只借助一个临时空间,每次只向左移动1位,循环k次。这种方法产生了多于的运行时间。前面一篇文章中用程序...
分类:
移动开发 时间:
2014-05-07 23:22:35
阅读次数:
410
欧几里得算法求最大公约数算法思想:
求p和q的最大公约数,如果q=0,最大公约数就是p;否则,p除以q余数为r,p和q的最大公约数即q和r的最大公约数。 java实现代码: 1 public
class Demo0 { 2 public static void main(String[] ...
分类:
编程语言 时间:
2014-05-06 09:20:44
阅读次数:
434
要求:从上往下打印二叉树的每个结点,同一层的结点按照从左到右的顺序打印。算法思想:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直到队列中所有的结点都被打印出来为止。
分类:
其他好文 时间:
2014-05-05 10:00:38
阅读次数:
307