创新工场2014笔试算法题汇总
来源:互联网 发布:linux下安装navicat 编辑:程序博客网 时间:2024/05/28 04:54
1. 堆排序
- #include<iostream>
- usingnamespace std;
- void SwapValue(int &m, int &n)
- {
- int temp = m;
- m = n;
- n = temp;
- }
- void max_heap(vector<int> &vec, int i, int heap_size)
- {
- int l = 2*i;
- int r = 2*i+1;
- int largest = i;
- if(l<=heap_size && vec[l-1]>vec[largest-1])
- largest = l;
- if(r<=heap_size && vec[r-1]>vec[largest-1])
- largest = r;
- if(largest!=i)
- {
- SwapValue(vec[largest-1],vec[i-1]);
- max_heap(vec, largest, heap_size);
- }
- }
- void heapSort(vector<int> &vec)
- {
- int heap_size = vec.size();
- for(int i=heap_size/2; i>=1; i--)
- max_heap(vec, i, heap_size);
- for(int i=heap_size; i>=1; i--)
- {
- SwapValue(vec[0],vec[i-1]);
- max_heap(vec, 1, i);
- }
- }
- void print(vector<int> vec)
- {
- for(int i=0; i<vec.size(); i++)
- cout<<vec[i]<<" ";
- cout<<endl;
- }
- int main()
- {
- vector<int> vec;
- vec.push_back(23);
- vec.push_back(5);
- vec.push_back(1);
- vec.push_back(10);
- vec.push_back(13);
- vec.push_back(32);
- vec.push_back(21);
- vec.push_back(14);
- vec.push_back(19);
- vec.push_back(20);
- cout<<"排序前: "<<endl;
- print(vec);
- heapSort(vec);
- cout<<"排序后: "<<endl;
- print(vec);
- return 0;
- }
2.求一个正整数N的开方,要求不能用库函数sqrt(),结果的精度在0.001
解析:牛顿迭代
- #include<iostream>
- using namespace std;
- int main()
- {
- int N;
- cout<<"输入N的值:";
- cin>>N
- double x1 = 1;//初值
- double x2 = x1/2.0+N/2.0/x1;
- while( fabs(x2-x1)>0.001)
- {
- x1 = x2;
- x2 = x1/2.0+N/2.0/x1;
- }
- cout<<x1<<endl;
- return 0;
- }
3.给定一个矩阵intmaxtrixA[m][n],每行和每列都是增序的,实现一个算法去找矩阵中的某个元素element.
解法一:
- #include<iostream>
- using namespace std;
- const int M = 4;
- const int N = 4;
- int main
- {
- int matrix[M][N] = {};
- double element;
- int flag = 1;
- for(int j=0; j<N; j++)
- {
- if(matrix[i][j] == element)
- cout<<"位置"<<endl;
- while( flag<M && matrix[i][j]<element )
- --flag;
- while( flag<M && matrix[i][j]>element )
- ++flag;
- }
- }
解法二:
- bool Find(int *matrixA, int m, int n, int element)
- {
- bool found = false;
- if(matrixA != NULL & m & n)
- {
- int i,j;
- i=0;j=n-1;
- while(i<m;j>=0)
- {
- if(maxtrixA[i*n+j] == element)
- {
- found = true;
- break;
- }
- else if(matrix[i*n+j]>element
- --j;
- else
- ++i
- }
- }
- }
转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/12233289
- 创新工场2014笔试算法题汇总
- 创新工场2014笔试算法题汇总
- 2014创新工场笔试题
- 创新工场笔试小记(创新工厂算法笔试题)
- 创新工场笔试题
- 创新工场笔试题
- 创新工场笔试题
- 创新工场笔试题
- 创新工场笔试题
- 创新工场2014笔试编程题答案
- 创新工场笔试题整理
- 创新工场笔试题整理
- 创新工场一道笔试题
- 创新工场笔试题整理
- 创新工场2018笔试题
- 创新工场笔试题--笔试地点:华南理工大学
- 创新工场笔试题2014 校园招聘 ---武汉站
- 创新工场笔试题2014年,求概率
- Dom4j 添加 standalone 字段
- XML讲义-20131017
- zeromq 利用protobuf通信
- android 屏幕旋转180度
- JavaScript 中的陷阱
- 创新工场2014笔试算法题汇总
- 是否为闰年
- php 上传文件到服务器
- OC——单例模式
- extern变量调用报错
- java并发编程实践笔记
- Android系统启动过程
- 怎么做网站的搜索引擎优化
- 阿里巴巴2014笔试算法题汇总