最近某某公司网上笔试有这么一个题目,本人有幸参加了,但是当时纠结没有写出来,尤其纠结这个数组要怎么表示,当时没想过要自己重新定义结构体啊!!!丢人!!现在拿出来再丢丢脸,希望下次长点记性。
【题目:】
数组a中每个元素包含两个值,第一个是整型,第二个是字符串,写一个sort函数,以第一个值[int]为键对数组按照从小到大进行排序。
数组?啥数组还能是一个元素包含整数和字符串的啊??当时就不知道这个数组怎么定义了,想想真是丢人。。。。
又收到在线笔试通知,于是兴起,认真的做做,告诫自己!!
C/C++源代码如下:
#include "stdafx.h"
#include <iostream>
using namespace std;
//define the STRUCT
struct BMW{
int x;
char a[100];
};
//Get the length of Array
template <class T>
int getArrayLen(T& array){
return (sizeof(array) / (sizeof(array[0])));
}
//************ sort1:Param1:struct BMW p[] Param: int N 。************//
struct BMW *sort1(struct BMW p[],int N){
struct BMW tmp;
for(int i=0;i<N;i++){
for(int j=i+1;j<N;j++){
if(p[i].x>p[j].x){
tmp=p[i];
p[i]=p[j];
p[j]=tmp;
}
}
}
return p;
}
//************ sort2: Param:struct BMW wmb[] ************//
struct BMW *sort2(struct BMW wmb[]){
int N=0;
N = getArrayLen(wmb);
struct BMW tmp;
for(int i=0;i<N;i++){
for(int j=i+1;j<N;j++){
if(wmb[i].x>wmb[j].x){
tmp=wmb[i];
wmb[i]=wmb[j];
wmb[j]=tmp;
}
}
}
return wmb;
}
//TEST
int _tmain(int argc, _TCHAR* argv[])
{
BMW Ary[]={{14,"wmb007@126.com"},{6,"love"},{22,"WeChat ID:FZUXMUBMW"},{8,"Y.L"},{9,"& X.L"},{5,"I really"},{17,"http://weibo.com/wangmb007"}};
BMW *SortAry = sort1(Ary,getArrayLen(Ary));
BMW *SortAry1 = sort2(Ary);
for (int i = 0; i < getArrayLen(Ary); i++) {
printf("%d,%s;\n",SortAry[i].x,SortAry[i].a);
}
for (int i = 0; i < getArrayLen(Ary); i++) {
printf("%d,%s;\n",SortAry1[i].x,SortAry1[i].a);
}
}