插入排序 最好情况输入数组开始时候就是满足要求的排好序的,时间代价为θ(n);
最坏情况输入数组是按逆序排序的,时间代价为θ(n^2)。 归并排序
归并排序采用了算法设计中的分治法,分治法的思想是将原问题分解成n个规模较小而结构与原问题相似的小问题,递归的解决这些子问题,然后再去合并其结果,得到原问...
分类:
其他好文 时间:
2014-05-19 22:13:51
阅读次数:
284
简介:
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(list)...
分类:
其他好文 时间:
2014-05-16 01:35:14
阅读次数:
397
1、二分查找常见错误:死循环:循环体外的初始化条件,与循环体内的迭代步骤,
都必须遵守一致的区间规则,也就是说,如果循环体初始化时,是以左闭右开区间为边界的,那么循环体内部的迭代也应该如此.如果两者不一致,会造成程序的错误.溢出:middle=left+(right-left)/2终止条件:一般来说...
分类:
其他好文 时间:
2014-05-14 23:26:03
阅读次数:
402
归并排序是分治法的典型举例。分治法的思想是,将原有问题分解为几个规模较小但类似于原问题的子问题,递归的求解这些子问题,然后再合并这些子问题的解来建立原问题的解。分治模式在每层递归时都有三个步骤:分解原问题为若干子问题,这些子问题是原问题的规模较小的实例。解决这些子问题,递归地求解各子问题。然而,若子...
分类:
其他好文 时间:
2014-05-12 19:56:28
阅读次数:
265
public class Perm{ public static void perm(Object[]
a, int k, int m) { if (k == m) for (int i = 0; i =
2,则对首个元素的取可能的所有值,后面n-1个元素进行全排列(递归)。时间...
分类:
编程语言 时间:
2014-05-12 05:09:00
阅读次数:
428
分治法(Divide and Conquer)的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的几个相似问题,以便各个击破,分而治之。...
分类:
其他好文 时间:
2014-05-11 15:11:22
阅读次数:
612
从一个序列里面选择第k大的数在没有学习算法导论之前我想最通用的想法是给这个数组排序,然后按照排序结果返回第k大的数值。如果使用排序方法来做的话时间复杂度肯定至少为O(nlgn)。问题是从序列中选择第k大的数完全没有必要来排序,可以采用分治法的思想解决这个问题。Randomize
select 算法....
分类:
其他好文 时间:
2014-05-07 19:23:35
阅读次数:
394
题意:两两相邻的元素可以交换,问最小交换次数使得数列为升序。
思路:归并排序分治法。看到琦神又用了树状数组的方法求。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define P...
分类:
其他好文 时间:
2014-05-07 08:54:01
阅读次数:
488
转:初期: 一.基本算法: (1)枚举. (poj1753,poj2965)
(2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295)
(6)模拟法.(poj1068,poj2632,po...
分类:
其他好文 时间:
2014-05-02 00:00:49
阅读次数:
449