- 博客(7)
- 资源 (2)
- 收藏
- 关注
原创 hdoj 1280 前m大的数
给定一个包含N(N #include using namespace std; int main(void) { int N, M; while(cin >> N >> M) { int *temp = new int[N]; for(int i=0; i<N; ++i) { cin >> temp[i]; } int data[10005]; f
2012-05-11 20:04:10 589
原创 hdoj 3791 二叉搜索树
#include using namespace std; struct BiTreeNode//结点结构体 { char ch; BiTreeNode *left; BiTreeNode *right; BiTreeNode(char x, BiTreeNode *l = NULL, BiTreeNode *r = NULL) :ch(x), left(l), right(r)
2012-05-11 19:36:02 486
原创 归并排序
归并排序的基本操作是合并两个已排序的表。因为两个表是已排序的,所以若将输出放到第三个表中则该算法可以通过对输入数据一趟排序来完成。基本的合并算法是取两个输入数组A和B、一个输出数组C以及三个计数器(Actr、Bctr、Cctr),他们的初始位置位于对应数组的初始端。A[Actr]和B[Bctr]中的较小者被复制到C[Cctr],相关的计数器向下移动一步。当两个输入表一个用完时,则将另一个表中的剩余
2012-05-03 11:40:45 583
原创 实现atoi函数
int a_to_i(const char *str) { int cur; //当前字符 int total;//当前整型数据 int sign; //数据符号 //去点前面的空白符 while(isspace((int)(unsigned char)*str)) { str++; } //如果*str最高位是1,那么直接将其付给int型时会变成负数,所以必须先转成un
2012-05-02 15:28:26 490
原创 堆排序
堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单。 (1)用最大堆排序的基本思想 ① 先将初始文件R[1..n]建成一个最大堆,此堆为初始的无序区; ② 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n],且满足R[1
2012-05-01 11:41:23 598
原创 希尔排序
希尔排序是对插入排序的一种改进,具体的时间复杂度本人还没有完全理解,只是明白了它是怎么运行的。 希尔排序基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组,所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2 #include #include #include using namespace std; te
2012-05-01 10:45:38 445
原创 插入排序
插入排序是最简单的排序之一,有N-1趟排序组成,最差时间复杂度为O(n^2),最优时间复杂度为O(n),平均时间复杂度为O(n2)。 #include #include #include using namespace std; template void insertSort(vector &data) { int j = 1; int size = data.size(
2012-05-01 10:19:27 481
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人