数组a中每个元素包含两个值第一个是整型第二个是字符串写一个sort函数以第一个值为键按从小到大排序…

  • Post author:
  • Post category:其他


最近某某公司网上笔试有这么一个题目,本人有幸参加了,但是当时纠结没有写出来,尤其纠结这个数组要怎么表示,当时没想过要自己重新定义结构体啊!!!丢人!!现在拿出来再丢丢脸,希望下次长点记性。

【题目:】



数组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);
  }
}

转载于:https://my.oschina.net/FZUXMUBMW/blog/392942