1:给定三个整数a,b,c实现函数int median(int a,int b,int c),返回三个数的中位数,不可以使用sort,要求整数操作(比较,位运行,加减乘除)次数尽量少,并分析说明程序最坏和平均情况下使用的操作次数
#include <stdio.h> #include <iostream> using namespace std; int median(int a,int b,int c) { int abMax = (a+b + abs(a-b))/2; int acMax = ((a+c) + abs(a-c))/2; if(abMax != acMax) return abMax < acMax ? abMax:acMax; else return ((b+c) +abs(b-c))/2; } int main() { int a = 1; int b = 2; int c = 3; cout<<median(a,b,c); getchar(); return 0; }
2:给定一个key(只含有ASCII编码的小写英文字母),例如kof,然后对input的string(只含有ASCII编码的小写英文字母)利用这个key进行排序,顺序是:先按照key中的字符顺序,然后对key中不包含key的字符,按a-z排序
#include<iostream> #include<algorithm> using namespace std; char *SortKiy(char *str,char *key) { sort(str,str+strlen(str)); int flag=0; for(int i=0;i<(int)strlen(key);i++) { for(int j=0;j<(int)strlen(str);j++) { if(key[i]==str[j]) { for(int k=j;k>flag;k--) { str[k]=str[k-1]; } str[flag]=key[i]; ++flag; } } } return str; } int main() { char key[4]="kof"; char str[50]="wqtewqtewkwetiowoweff"; cout<< SortKiy(str,key)<<endl; getchar(); return 0; }