基本思想:
假设我们现在对“6 1 2 7 9 3 4 5 10 8”这10个数进行排序。首先在这个序列中随便找一个数作为基准数。为了方便,就让第一个数6作为基准数。分别从初始序列“6 1 2 7 9 3 4 5 10 8”两端开始“探测”。先从右往左找一个小于6的数,再从左往右找一个大于6的数,然后交换它们,用两个变量i和j分别指向最左边和最右边,直到i=j,将基准数与a[i]交换,再继续递归...
分类:
编程语言 时间:
2015-01-27 18:35:54
阅读次数:
155
直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。
第一种程序:
void InsertSort1(int arr[] , int n)
{
for(int i=1;i//循环从第二个数组元素开始,因为arr[0]作为最初已排序部分
...
分类:
编程语言 时间:
2015-01-27 16:29:51
阅读次数:
226
为了引出动态规划的基本思想,请看下面的例子:
题目描述:
斐波那契数列是数学中常见的数列,也叫兔子数列,它满足:a[1]=1,a[2]=1,a[n]=a[n-1]+a[n-2](n>2),输入n,输出a[n] mod 10000007的值。(n
输入样例:
3
4
5
输出样例:
2
3
5
【算法分析】
看到题目以后,我们可以很轻松的写出两个版本的代码,一个是递推...
分类:
其他好文 时间:
2015-01-27 16:26:17
阅读次数:
402
冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。
“冒泡排序”的原理是:每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数(即第5位)归位,第二趟只能将倒数第2位上的数(即第4位)归位,第三趟只能将倒数第3位上的数(即第3位)归位,依次。
总结一下:如果有n个数进行排序,只需将n-1个数归位,也就是说要进行n-1趟操作。而“每一趟”都需要...
分类:
编程语言 时间:
2015-01-27 16:21:14
阅读次数:
198
LvesLi原创,转载请注明原文链接谢谢 http://www.androiddev.net/lvesli_delegate/委托是指给一个对象提供机会对另一对象中的变化做出反应或者相应另一个对象的行为。其基本思想是协同解决问题。在程序中:一般情况下1.委托需要做的工作有: 1.1定义协议与方法 ....
分类:
移动开发 时间:
2015-01-27 11:03:54
阅读次数:
186
五大算法之分治算法:当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。如果这些子问题还较大,难以解决,可以再把它们分成几个更小的子问题,以此类推,直至可以直接求出解为止。这就是分治策略的基本思想。...
分类:
编程语言 时间:
2015-01-26 17:09:11
阅读次数:
330
快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序流程:(1...
分类:
编程语言 时间:
2015-01-26 15:08:12
阅读次数:
202
希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成若干个组子序列,所有...
分类:
编程语言 时间:
2015-01-26 14:56:48
阅读次数:
254
Java中与数组相关的算法,常用的有:冒泡排序、选择排序、和反转排序。
【冒泡排序】
1. 基本思想
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有必要交换为止,也就是说该数列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名之。
2. 算法
因此冒泡排序总的平均时间复杂度为 .
3. 算法实现...
分类:
编程语言 时间:
2015-01-26 00:07:50
阅读次数:
227
写一个系列的经典算法,共同学习!1.快速排序基本思想:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。在网上看到一篇博客,把快速排序命名为 挖坑填数+分治法,感觉很有道理,所以等会程序...
分类:
编程语言 时间:
2015-01-25 21:00:16
阅读次数:
143