自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 基数排序算法

<br />声明:本算法参考了百度百科中的相关文章,表示感谢~~~<br />/* * 基数排序 * 1)假设待排序的元素是由dk-1dk-2...d3d2d1个关键字组成 * 2)先按关键字d1进行排序,然后在前次排序的基础上,按照d2 * 排序,直到dk-1 * 稳定性:稳定的 * 空间复杂度 n*radix保存收集数据的空间 其中radix为关键字取值范围 * radix个指示每个队列元素个数的空间 * 时间复杂度: O(d(n+radix)) O

2011-03-31 22:54:00 607

原创 堆排序算法

<br />声明:本文参考了疯狂代码的文章,表示感谢,原文链接http://blog.csdn.net/jiqiren007/archive/2010/10/28/5972735.aspx<br />/* * 堆排序 * 1) 建堆,建堆是不断调整的过程,从len/2处开始调整,直到第一个节点,len是堆中元素的个数 * 建堆的过程是线性的过程,从len/2到0处一直调用调整堆的过程O(h1) + O(h2) + O(hlen/2), 其中h表示节点的深度,len/2表示节点

2011-03-30 17:36:00 563

原创 希尔排序算法

<br />/* * 希尔排序 * 它是一种改进的插入排序 * 取一个小于n的增量d,然后将所有距离为d的分为一组,进行插入排序 * 然后增量减小,但是最后一个增量d=1 * 稳定性:不稳定 * 空间复杂度:O(1) * 时间复杂度:最好O(n) 最差O(n2) 平均O(n2) */ void ShellPass(int a[], int n, int d) { int temp, j; for(int i=d; i<n; i++) { j = i;

2011-03-29 22:35:00 558

原创 快速排序算法

<br />/* * 快速排序 * 基本思想 * 通过一趟排序,将要排序的数据分割成两个部分 * 其中一部分数据比另外一部分数据都要小 * 然后分别对两个部分再进行快速排序 * 整个过程可以用递归来解决 * 稳定性:不稳定 * 空间复杂度:O(1) * 时间复杂度:最好O(nlog2n) 最差O(n2) 平均O(nlog2n) */ /* * 划分 */ int Partition(int a[], int left, int right) {

2011-03-29 21:10:00 508

原创 归并排序算法

/* * 二路归并排序 * 基本思想 * 当只有一个元素的时候终止排序,超过一个元素的时候,将所有 * 元素分成大致相同的两个集合,然后分别对两个集合进行排序,最后 * 将排好序的集合进行归并 * 稳定性:稳定 * 空间复杂度:O(n) * 时间复杂度:最好O(nlog2n) 最坏O(nlog2n) 平均O(nlog2n) */ /* * 归并 */ void Merge(int a[], int low, int high) { int mid =

2011-03-29 18:19:00 509

原创 插入排序算法

<br />/* * 插入排序 * 基本思想 * 1)从第0个位置开始,假设第0个位置为最小,跳到第二个位置, * 如果比第0个位置的数要小,插到第0个位置的前面,跳到第三个 * 位置,在前面已经排好序的情况下,找到合适的插入点,其它 * 情况依次类推 * 2)总共需要插入n-1次 * 稳定性:稳定 * 空间复杂度:O(1) * 时间复杂度:最好O(n) 最差O(n2) 平均O(n2) */ void InsertSort(int a[], int

2011-03-29 14:56:00 474

原创 冒泡排序算法

/* * 冒泡排序(从小到大) * 基本思想 * 1)总共冒泡n-1次,每次进行相邻的两两相互比较,较大的交换到后面 * 2)一次冒泡总能将最大的一个数冒到最后,这样的过程类似于水中的气泡 * 上冒,故称冒泡排序 * 3)如果存在一次冒泡过程,没有任何数据进行交换,则说明已经有序,停止排序 这样可以提高性能 * 稳定性:稳定 * 时间复杂度:最好O(n) 最差O(n2) 平均O(n2) * 适用情况:n小时较好 */ void BubbleSort(

2011-03-29 14:18:00 521

原创 选择排序算法

<br />#include <iostream> using namespace std; /* * 选择排序 * 基本思想 * 1)i从0到n-1,每次选择一个最小(最大)到i位置 * 2)总共需要选择n-1次 * 3)刚开始默认a[i]最小(最大) * 4)不要每次都交换,先记录索引号,最后一次再交换,可以提高性能 * 稳定性: 选择排序不稳定,例如 4 3 4 2 8, 4的先后顺序在交换的过程中被破坏了 * 时间复杂度:最好 O(n2) 最差 O(n2)

2011-03-29 12:40:00 498

原创 排列组合之组合问题算法实现

声明:本算法参考了网上其它的一些算法,在此表示感谢,由于是时隔很久的一个总结,相关参考链接已经忘了,故此处没有给出参考页面,敬请见谅~~~组合问题:问题:给定两个数n和r,求出从1到n中选出r个数的组合例如 n=5, r=3结果:1,2,3  1,2,4  1,2,5  1,3,4  1,3,5  1,4,5  2,3,4  2,3,5  3,4,5注意:如果你需要对一个数组的内容进行组合,你可以先对数组下标进行组合,然后再根据下标转换成对应的内容,故本算法具有通用性。1.采用回溯法实现分析:主要有两个回溯

2011-03-23 22:06:00 477

原创 排列组合之排列问题的算法实现

声明:本算法参考网上了其它的一些算法,在此表示感谢,由于是时隔很久的一个总结,相关参考链接已经忘了,故此处没有给出参考页面,敬请见谅~~~排列问题:问题:给定两个数n和r,求出从1到n中选出r个数的排列注意:如果你需要对一个数组内容进行排列,你可以转换成上面的形式,先对数组下标进行排列,然后按照下标还原成数组内容,故任何排列都转换成上面的形式,本算法具有通用性。#include using namespace std; const int MAXSIZE = 100; //用来保存一种排

2011-03-23 18:25:00 778

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除