您的位置:首页 > 编程语言 > C语言/C++

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

2015-03-27 00:00 519 查看
摘要: 数组a中每个元素包含两个值,第一个是整型,第二个是字符串,写一个sort函数,以第一个值[int]为键对数组按照从小到大进行排序。

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

【题目:】

数组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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C C++ 结构体 排序
相关文章推荐