【发布时间】:2010-11-08 18:34:13
【问题描述】:
我正在尝试创建一个函数来获取向量中的 3 个最大数字。例如: 数字:1 6 2 5 3 7 4 结果:5 6 7
我想我可以对它们进行 DESC 排序,在开始时获取 3 个数字,然后再使用 ASC,但这会浪费内存分配和执行时间。我知道有一个更简单的解决方案,但我无法弄清楚。另一个问题是,如果我只有两个数字怎么办...
顺便说一句:我使用 BorlandC++ 3.1 作为编译器(我知道,很老,但那是我将在考试中使用的......)
谢谢大家。
LE:如果有人想了解更多关于我要完成的工作,您可以查看代码:
#include<fstream.h>
#include<conio.h>
int v[1000], n;
ifstream f("bac.in");
void citire();
void afisare_a();
int ultima_cifra(int nr);
void sortare(int asc);
void main() {
clrscr();
citire();
sortare(2);
afisare_a();
getch();
}
void citire() {
f>>n;
for(int i = 0; i < n; i++)
f>>v[i];
f.close();
}
void afisare_a() {
for(int i = 0;i < n; i++)
if(ultima_cifra(v[i]) == 5)
cout<<v[i]<<" ";
}
int ultima_cifra(int nr) {
return nr - 10 * ( nr / 10 );
}
void sortare(int asc) {
int aux, s;
if(asc == 1)
do {
s = 0;
for(int i = 0; i < n-1; i++)
if(v[i] > v[i+1]) {
aux = v[i];
v[i] = v[i+1];
v[i+1] = aux;
s = 1;
}
} while( s == 1);
else
do {
s = 0;
for(int i = 0; i < n-1; i++)
if(v[i] < v[i+1]) {
aux = v[i];
v[i] = v[i+1];
v[i+1] = v[i];
s = 1;
}
} while(s == 1);
}
城市 = 阅读 Afisare = 显示 Ultima Cifra = 数字的最后一位 Sortare = 冒泡排序
【问题讨论】:
-
为什么要标记冒泡排序?
-
出于好奇,那是什么考试?即使在大学,我们也可以使用当前的编译器。而且学习(通过考试)这些古老的技术听起来并不是很有用。 ;-)
-
我真的很好奇你为什么要做两种?
-
我已经编辑了这篇文章,所以你可以看到我为什么用冒泡排序来标记它。是的,这是一个大学考试,但罗马尼亚在考试中仍然使用纸而不是个人电脑......现在我在阅读回复后正在考虑,将它分类两次是无意义的。
标签: c++ vector c++builder