【华为机试】北京题2015.10.14
来源:互联网 发布:mysql导入xls文件 编辑:程序博客网 时间:2024/06/16 06:15
第一题:交叉排序,本来以为很简单,结果没注意到题目的运行时间限制,哎,一直超时,不晓得原因,分别采用了冒泡、直接选择、快排,全部超时
冒泡:
#include <iostream>using namespace std;#define maxsize 1000int main(){ int n=0,a[maxsize];int b[maxsize],c[maxsize];int k1=0,k2=0; int i=0,j=0; char ch=0;int temp=0; while(ch!= '\n') { cin>>a[n++]; ch=getchar(); }for(i=0;i<n;i++){if(i%2==0){b[k1++]=a[i];}else{c[k2++]=a[i];}}for(i=0;i<k1;i++){for(j=0;j<k1-i-1;j++){if(b[j]>b[j+1]){temp=b[j];b[j]=b[j+1];b[j+1]=temp;}}}for(i=0;i<k2;i++){for(j=0;j<k2-i-1;j++){if(c[j]<c[j+1]){temp=c[j];c[j]=c[j+1];c[j+1]=temp;}}}k1=0,k2=0;for(i=0;i<n;i++){if(i%2==0){cout<<b[k1++]<<" ";}else{cout<<c[k2++]<<" ";}}cout<<endl; return 0;}
直接选择:
#include <iostream>using namespace std;#define maxsize 1000int main(){ int n=0,a[maxsize]; int i=0,j=0; char ch=0;int temp=0;int index=0; while(ch!= '\n') { cin>>a[n++]; ch=getchar(); }for(i=0;i<n;i=i+2) { index=i; for(j=i+2;j<n;j=j+2) { if(a[j]<a[index]) index=j; } if(index!=i) { temp=a[i]; a[i]=a[index]; a[index]=temp; } }for(i=1;i<n;i=i+2) { index=i; for(j=i+2;j<n;j=j+2) { if(a[j]>a[index]) index=j; } if(index!=i) { temp=a[i]; a[i]=a[index]; a[index]=temp; } }for(i=0;i<n;i++) cout<<a[i]<<" ";cout<<endl; return 0;}
快排:
#include <iostream>using namespace std;#define maxsize 1000int b[maxsize],c[maxsize];void QuickSortA(int left, int right){ int i, j, t, temp; if(left > right) return; temp = b[left]; i = left; j = right; while(i != j) { while(b[j] >= temp && i < j) { j--; } while(b[i] <= temp && i < j) { i++; } if(i < j) { t = b[i]; b[i] = b[j]; b[j] = t; } } b[left] = b[i]; b[i] = temp; QuickSortA(left, i - 1); QuickSortA(i + 1, right);}void QuickSortB(int left, int right){ int i, j, t, temp; if(left > right) return; temp = c[left]; i = left; j = right; while(i != j) { while(c[j] <= temp && i < j) { j--; } while(c[i] >= temp && i < j) { i++; } if(i < j) { t = c[i]; c[i] = c[j]; c[j] = t; } } c[left] = c[i]; c[i] = temp; QuickSortB(left, i - 1); QuickSortB(i + 1, right);}int main(){ int n=0;int k1=0,k2=0; int i=0,j=0; char ch=0;int temp=0; while(ch!= '\n') {if(n%2==0){cin>>b[k1++];n++;}else{cin>>c[k2++];n++;} ch=getchar(); }QuickSortA(0, k1 - 1);QuickSortB(0, k2 - 1);k1=0,k2=0;for(i=0;i<n;i++){if(i%2==0){cout<<b[k1++]<<" ";}else{cout<<c[k2++]<<" ";}}cout<<endl; return 0;}
第二题:
第三题:
0 0
- 【华为机试】北京题2015.10.14
- 2012华为机试(北京)
- 华为2017上机题(北京优招)
- 2014华为校园招聘机考(10.12北京)
- 华为机试第一题
- 华为机试历年题
- 今天参加北京华为笔试的两道编程题(第一次在csdn写东西)
- 华为2012年校园招聘(北京)
- 华为往事(十五)--华为北京研究所
- 2013华为机试-编程题3
- 2013华为机试-编程题3
- 2014华为招聘机试第三题
- 华为2015机试测试题
- 华为2012机试第三题
- 华为机试专辑【1-5题】
- 华为机试专辑【6-10题】
- 华为机试专辑【11-15题】
- 华为机试1---21题
- C++ 数据封装
- maven 项目遇到的问题(不断更新中)
- git
- 【Android】Dialog 对话框各种式样的制作
- Android中的Handler机制
- 【华为机试】北京题2015.10.14
- 阶乘和
- HBase模式设计
- iOS每日一记——————一个很好的第三方库JVFloatLabeledTextField
- 如何用extjs 3.4做三层表头
- 17.1.4.4 Binary Log Options and Variables Binary Log
- 理解javascript面向对象编程
- 女生找对象与正则表达式(通配符)
- 用atomic一定是线程安全的吗?