- 博客(11)
- 资源 (10)
- 收藏
- 关注
原创 第二章之“逆序对数目”(思考题2-4)
设计用时间复杂度为O(nlgn)的算法对长度为n的数组中的逆序对计数。核心思想就是修改合并排序算法,因为当合并时会比较两个连续小数组中元素的大小。#include #include #include #define BUFFER_SIZE 10void Merge(int *a,int p,int q,int r,int *cnt){ int i=0; int j=0;
2011-12-27 14:51:47 771
原创 第二章之“冒泡排序”(思考题2-2)
重复的交换相邻的两个反序元素。#include #include #include #define BUFFER_SIZE 10void BubbleSort(int *a,int len){ int i=0; int j=0; int temp=0; for(i=1;i<len;i++) { for(j=0;j<len-i;j++) { if(a[j
2011-12-27 14:12:31 699
原创 第二章之“合并排序中对小数组采用插入排序”(思考题2-1)
虽然插入排序的时间复杂度为O(n^2),合并排序的时间复杂度为O(nlgn),但是当子问题规模很小时,插入排序的效率要比合并排序高,所以,可以将合并排序和插入排序进行组合,当合并排序的子数组小到一定程度时,不再进行划分,而是改变算法,用插入排序算法对其进行排序。#include #include #include #define BUFFER_SIZE 10int Insert
2011-12-27 13:58:19 2085 2
原创 第二章之“CheckSums”(练习2.3-7)
题目:请给出一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。思路:输入:数组a[1...n],待查找整数v输出:若存在,输出在数组a中找到的第一对加和等于v的两个元素索引及其值。首先采用合并排序算法对数组进行从小到大排序(复杂度为O(nlgn))。从左→右扫描数组a(时间复杂度为O(n)),对
2011-12-27 09:51:08 640
原创 第二章之“二分查找”(递归实现,练习2.3-5)
#include #include #include #define BUFFER_SIZE 10void Merge(int *a,int p,int q,int r){ int n1=q-p+1; int n2=r-q; int b[n1]; int c[n2]; int n=n1+n2; int i=0; int j=0; int k=0; memset(b,
2011-12-26 22:13:04 581
原创 第二章之“二分查找”(迭代实现,练习2.3-5)
#include #include #include #define BUFFER_SIZE 10void Merge(int *a,int p,int q,int r){ int n1=q-p+1; int n2=r-q; int b[n1]; int c[n2]; int n=n1+n2; int i=0; int j=0; int k=0; memset(b,
2011-12-26 22:04:05 631
原创 第二章之“合并排序”(不使用哨兵元素,练习2.3-2)
#include #include #include #define BUFFER_SIZE 10void Merge(int *a,int p,int q,int r){ int n1=q-p+1; int n2=r-q; int b[n1]; int c[n2]; int n=n1+n2; int i=0; int j=0; int k=0; memset(b,
2011-12-25 16:15:08 701
原创 第二章之“合并排序”
本书第一个运用分治算法的程序#include #include #include #define BUFFER_SIZE 10void Merge(int *a,int p,int q,int r){ int n1=q-p+1; int n2=r-q; int b[n1+1]; int c[n2+1]; int n=n1+n2; int i=0; int
2011-12-25 15:33:06 541
原创 第二章之“选择排序”
#include #include #include #define BUFFER_SIZE 10 void SelectionSort(int *a,int len){ int i=0; int j=0; int min=0; int temp=0; for(j=0;j<len-1;j++) { min=a[j]; for(i=j+1;i<len;i++)
2011-12-24 19:01:58 512
原创 第二章之“插入排序”
#include #include #include #define BUFFER_SIZE 10void InsertionSort(int *a,int len){ int i=0; int j=0; int b[len]; b[0]=a[0]; for(j=1;j<len;j++) { i=j-1; while(i>=0&&b[i]>=a[j])//非降
2011-12-24 16:02:36 805
原创 常用的离散数学中的几个概念以及自己的几点拙见
1、等价关系(Equivalence Relation)设~是集合G上的一个二元关系,若满足以下条件:(1)自反性:对任何a∈G,有a~a(2)对称性:对任何a,b∈G,有a~b,则b~a(3)传递性:对任何a,b,c∈G,有a~b且b~c,则a~c则称~为G中的一个等价关系。2、等价类(Equivalence Class)集合b={x|x∈G,x~a},即集合
2011-12-23 21:35:13 9140
Bresenham画线算法、Cohen-SutherLand裁剪算法、de Casteljaus算法绘制贝赛尔曲线、扫描线填充算法、椭圆的扫描转换算法之C#实现
2012-09-01
Apriori和FP-Tree算法图形化实现+两个测试数据
2012-04-29
SETM算法代码+测试用例+具体操作步骤
2012-04-29
定时关机小程式(vc6实现,c语言)
2010-05-15
高精度模板c++高精度模板,c++实现,欢迎下载
2009-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人