- 博客(7)
- 收藏
- 关注
原创 习题 6.2-5 保持堆的性质 (迭代)
void MaxHeapify(vector &Heap,int i){ int left=i; int right=i; int temp; int largest=i; while(i<Heap.size()) { left=i<<1; right=(i<<1)+1; largest=i; if(leftHeap[i]) largest=left;
2012-12-29 21:24:24
181
原创 6.2 保持堆的性质
void MaxHeapify(vector &Heap,int i){ //左子索引 int left=i<<1; //右子索引 int right=(i<<1)+1; int temp; int largest=i; if(leftHeap[i]) largest=left; if(rightHeap[i]) largest=right; if(i!=large
2012-12-29 21:04:46
276
原创 思考题 2-2 冒泡排序
#include #include using namespace std;//将小的数往数组前端冒泡void BubbleSort(vector &ivec){ vector::size_type i=0,j=0; for(i=0;i<ivec.size()-1;i++) { for(j=ivec.size()-1;j>i;j--) { if(ivec[j]<iv
2012-11-17 16:47:36
260
原创 练习 2.3-7 求一个元素是否为数组中两个数的和
题目:给出一个O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断S中是否存在有两个其和等于x的元素。思路:首先采用合并排序算法对数组进行从小到大排序(复杂度为O(nlgn))然后从左→右扫描数组S(时间复杂度为O(n)),对每个a[i],在数组中用二分查找算法寻找v-a[i](时间复杂度为O(lgn)),则总时间复杂度为O(nlgn)#inclu
2012-11-17 12:51:15
326
原创 练习 2.3-5 二分查找
#include #include using namespace std;void merge(vector &ivec, int p, int q, int r ){ int nl=q-p+1; int nr=r-q; int *L=new int[nl]; int *R=new int[nr]; for(int i=0;i<nl;i++) { L[i]=ivec[p
2012-11-17 11:19:42
269
原创 2.3.1 合并排序
#include #include using namespace std;void merge(vector &ivec, int p, int q, int r ){ int nl=q-p+1; int nr=r-q; int *L=new int[nl]; int *R=new int[nr]; for(int i=0;i<nl;i++) { L[i]=ivec[p+
2012-11-17 10:06:09
197
原创 2.1 插入排序
#include #include using namespace std;int main(){ cout<<"enter a list of numbers:(ctrl+z to end)"<<endl; vector ivec; int a; while(cin>>a) ivec.push_back(a); for(vector::size_type i=1;i<ive
2012-11-17 09:38:47
276
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人