摘要: /* * bubbleSort.cpp * 冒泡排序,算法导论 P23 * Created on: 2011-12-28 * Author: LiChanghai */template<typename T>void bubbleSort(T array[ ], int n){ //定义哨兵,当其中一趟没有元素交换顺序的时候 //说明数组已经有序,排序结束 bool flag=1; int i, j =0; T temp; for(i=0; i<n; ++i) { flag = 0; //每一趟开始前对flag清0 ... 阅读全文
posted @ 2011-12-28 18:39 oceany 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 请给出一个运行时间为O(n lgn)的算法,使之在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。以下思路一 和 思路二来自http://blog.csdn.net/magic_coder/article/details/6435098思路一 :我们最容易想到的是O(n2)的算法,大致伪码即:1 findX(A, x){2 for i=0 to length[A] {3 key = A[i]4 for j=0 to length[A]{5 if(j != i && key + A[j] == x ){return true}6 }7 r 阅读全文
posted @ 2011-12-27 21:00 oceany 阅读(379) 评论(0) 推荐(0) 编辑
摘要: /* * binarySearch.cpp * 算法导论 P.23 2.3-5 * Created on: 2011-12-27 * Author: LiChanghai */#include <iostream>#include <cstdlib> using namespace std; template <typename T>size_t binarySearch(const T array[ ], size_t pBegin, size_t pEnd, T key) { //当只有2个元素的时候不再二分,直接比较 if(pBegin+1 == pE 阅读全文
posted @ 2011-12-27 13:57 oceany 阅读(210) 评论(0) 推荐(0) 编辑
摘要: Description人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的天数)。例如:给定时间为10,下次出现 阅读全文
posted @ 2011-12-26 14:59 oceany 阅读(601) 评论(0) 推荐(0) 编辑
摘要: //subMerge2----非哨兵方法实现两个有序序列的合并template<typename T>void subMerge2(vector<T> &array, typename vector<T>::iterator iterBegin, typename vector<T>::iterator iterBarrier, typename vector<T>::iterator iterEnd){ //创建两个数组,分别存放以iterBa... 阅读全文
posted @ 2011-12-23 13:30 oceany 阅读(302) 评论(0) 推荐(0) 编辑
摘要: /* * mergeSort.cpp * 合并排序算法,算法导论P.17 * Created on: 2011-12-21 * Author: LiChanghai *///#include <iostream>#include <vector>#include <iterator>using namespace std;#define FLT_MAX 1.0E38 //定义一个很大的值作为哨兵//对于待排序的数组 A[p...r], 其子数组A[p...q],A[q+1...r]已排好序//函数 subMerge(A, p, q, r), 将两个已排好序的 阅读全文
posted @ 2011-12-22 21:29 oceany 阅读(1001) 评论(11) 推荐(0) 编辑
摘要: /* * selectSort.cpp * 选择排序,算法导论P.16 习题2.2-2 * Created on: 2011-12-15 * Author: LiChanghai */#include <vector>#include <iterator>using namespace std;template<class T>void selectSort(vector<T> &array){ T temp; typename vector<T>::iterator iter1, iter2; //假设共有n个元素,遍历前 阅读全文
posted @ 2011-12-22 21:22 oceany 阅读(180) 评论(0) 推荐(0) 编辑
摘要: /* * insertSort.cpp * 插入排序算法,算法导论P.10 * 调用方法:vector<T> vec; insertSort(vec); * Created on: 2011-12-10 * Author: LiChanghai */#include <vector>#include <iterator>using namespace std;template<typename T>void insertSort(vector<T> &array){ //定义变量暂存元素 T key; //typename用于 阅读全文
posted @ 2011-12-22 21:21 oceany 阅读(177) 评论(0) 推荐(0) 编辑
摘要: int main( ){ /*编写程序将一个list容器的所有元素赋值给一个vector容器 * 其中list容器中存储的是指向C风格字符串的 char* 指针 * 而vector容器的元素则是string类型 **/ //a[ ]是一个指针数组,每个元素存放指向一个字符串的指针 char *a[ ] ={"go", "fucking", "shit!"}; //a[i]是指向字符串的指针,输出a[i]将输出第a[i]指向的字符串 cout<<a[0]<<""<<a[1]< 阅读全文
posted @ 2011-11-22 13:05 oceany 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 打开一个文件读入文本,对文本进行操作后存入另一个文件。int main( ){ //读取文件内容// string filename;// cout<<"please input the filename: "<<flush;// cin>>filename; ifstream infile;//定义fstream对象并打开文件 infile.open("testFile.txt"); if(!infile) { cerr<<"error: unable to open file "&l 阅读全文
posted @ 2011-11-21 15:50 oceany 阅读(289) 评论(0) 推荐(0) 编辑