由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教一个排序的问题
相关主题
有A[i]找2个sorted array中的第K小的元素,有O(lgn)方法吗?
问个题一道微软题
有没有这样的题型问道数组元素连续相乘的名题
问个小算法请问可以用二分法判断一个数组是否sorted吗?
求教移除数组重复元素的时间复杂度!!关于Inplace排序栈元素的解法?
G家这道题怎么做的?二维数组问题
一道面试题。BB家面经
问一个题,求相同元素最多的两个数组问一道F家的考古题
相关话题的讨论汇总
话题: int话题: double话题: 序号话题: 数组话题: 排序
进入JobHunting版参与讨论
1 (共1页)
a******r
发帖数: 9
1
a是一个一维数组,包含7个元素。想用Algorithm里的sort算法对a进行排序,可是如何能打印a数组内元素的对应序号呢?
vector va;
vector ::iterator aIter;
for (int i=0;i<7; i++)
{
va.push_back(a[i]);
}

sort(va.begin(),va.end());
比如a[3]={4,1,5},排序完之后打印出1,4,5。如何返回1,0,2这个对应序号?
或者使用其他STL函数也可以的。

谢谢各位前辈
d*******l
发帖数: 338
2
stl本身没有这种东西,你可以自己维护这个信息。有什么要求吗?如果没什么要求,
你直接开一个vector >,push_back(make_pair(a[i],i))再sort不就行了

何能打印a数组内元素的对应序号呢?

【在 a******r 的大作中提到】
: a是一个一维数组,包含7个元素。想用Algorithm里的sort算法对a进行排序,可是如何能打印a数组内元素的对应序号呢?
: vector va;
: vector ::iterator aIter;
: for (int i=0;i<7; i++)
: {
: va.push_back(a[i]);
: }
:
: sort(va.begin(),va.end());
: 比如a[3]={4,1,5},排序完之后打印出1,4,5。如何返回1,0,2这个对应序号?

i**********e
发帖数: 1145
3
vector > va;
for (int i = 0; i < n; i++) {
va.push_back(pair(a[i], i));
}
sort(va.begin(), va.end());
for (int i = 0; i < n; i++) {
cout << va[i].second << " ";
}
一些常见面试题的答案与总结 -
http://www.ihas1337code.com
y*******g
发帖数: 6599
4
map m;
for(int i=0;i<7;i++) {
m[a[i]]=i;
}
for(map::iterator it = m.begin();it!=m.end();++it) {
it->first; //1, 4,5
it->second; //1,0,2
}

何能打印a数组内元素的对应序号呢?

【在 a******r 的大作中提到】
: a是一个一维数组,包含7个元素。想用Algorithm里的sort算法对a进行排序,可是如何能打印a数组内元素的对应序号呢?
: vector va;
: vector ::iterator aIter;
: for (int i=0;i<7; i++)
: {
: va.push_back(a[i]);
: }
:
: sort(va.begin(),va.end());
: 比如a[3]={4,1,5},排序完之后打印出1,4,5。如何返回1,0,2这个对应序号?

d*******l
发帖数: 338
5
需要考虑下数组中有重复元素的情形

【在 y*******g 的大作中提到】
: map m;
: for(int i=0;i<7;i++) {
: m[a[i]]=i;
: }
: for(map::iterator it = m.begin();it!=m.end();++it) {
: it->first; //1, 4,5
: it->second; //1,0,2
: }
:
: 何能打印a数组内元素的对应序号呢?

y*******g
发帖数: 6599
6
有道理

【在 d*******l 的大作中提到】
: 需要考虑下数组中有重复元素的情形
w*******s
发帖数: 138
7

何能打印a数组内元素的对应序号呢?
自己写一个compare函数就可以了:
bool compare(int a, int b) {
return va[a] < va[b];
}
然后
vector index;
for (int i = 0; i < va.size(); ++i) {
index.push_back(i);
}
sort(index.begin(), index.end(), compare);

【在 a******r 的大作中提到】
: a是一个一维数组,包含7个元素。想用Algorithm里的sort算法对a进行排序,可是如何能打印a数组内元素的对应序号呢?
: vector va;
: vector ::iterator aIter;
: for (int i=0;i<7; i++)
: {
: va.push_back(a[i]);
: }
:
: sort(va.begin(),va.end());
: 比如a[3]={4,1,5},排序完之后打印出1,4,5。如何返回1,0,2这个对应序号?

a******r
发帖数: 9
8
多谢ls几位。3楼的code很好用~l
c*********t
发帖数: 2921
9
pair的大小比较是按照first来比较的?
谢谢!

【在 i**********e 的大作中提到】
: vector > va;
: for (int i = 0; i < n; i++) {
: va.push_back(pair(a[i], i));
: }
: sort(va.begin(), va.end());
: for (int i = 0; i < n; i++) {
: cout << va[i].second << " ";
: }
: 一些常见面试题的答案与总结 -
: http://www.ihas1337code.com

i**********e
发帖数: 1145
10
是的。但如果 first 是一样,那就会比较 second.
From http://www.cplusplus.com/reference/std/utility/pair/:
In inequality comparisons (<, >), only the first element is compared, except
if both first elements compare equal to each other, in this case only the
second element is taken into consideration for the comparison operation.
一些常见面试题的答案与总结 -
http://www.ihas1337code.com

【在 c*********t 的大作中提到】
: pair的大小比较是按照first来比较的?
: 谢谢!

1 (共1页)
进入JobHunting版参与讨论
相关主题
问一道F家的考古题求教移除数组重复元素的时间复杂度!!
求问一题,in-place排序一个字符数组里的词G家这道题怎么做的?
请教一道经典的面试真题一道面试题。
一个实际的排序问题问一个题,求相同元素最多的两个数组
有A[i]找2个sorted array中的第K小的元素,有O(lgn)方法吗?
问个题一道微软题
有没有这样的题型问道数组元素连续相乘的名题
问个小算法请问可以用二分法判断一个数组是否sorted吗?
相关话题的讨论汇总
话题: int话题: double话题: 序号话题: 数组话题: 排序