C++ C++;排序问题
我想创建一个排序系统,它会得到一些数字,然后按DESC排序 如果我按顺序输入C++ C++;排序问题,c++,C++,我想创建一个排序系统,它会得到一些数字,然后按DESC排序 如果我按顺序输入1,2,3,4,5,6,7,8,9,10,该代码工作正常。。 但是如果输入这些数字,无序的话,它就会被分解 我的密码是:: #include <iostream.h> main () { int a[10], max, temp; for (int i=0; i<10; i++) { cout << "Enter number " << i+1 << ":
1,2,3,4,5,6,7,8,9,10
,该代码工作正常。。
但是如果输入这些数字,无序的话,它就会被分解
我的密码是::
#include <iostream.h>
main () {
int a[10], max, temp;
for (int i=0; i<10; i++) {
cout << "Enter number " << i+1 << ": ";
cin >> a[i];
}
for (int j=0; j<10; j++) {
for (int x=0; x<=j; x++) {
if (a[j] > a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
cout << "Sort [DESC]: \n";
for (int w=9; w>=0; w--) {
cout << w << ". " << a[w] << "\n";
}
//cout << "Max: " << max;
}
#包括
主要(){
内部温度[10],最大温度;
对于(inti=0;i您正在访问a[10]
(通过a[j+1]
),这肯定是不正确的。简单的冒泡排序通常如下所示,例如:
for(int i = NUMBER_OF_ELEMENTS - 1; i > 0; --i)
for(int t = 0; t < i; ++t)
{
if(item [t] greater than [t+1])
{
swap item [t] with [t+1]
}
}
for(int i=元素的个数-1;i>0;--i)
对于(int t=0;t
您正在访问a[10]
(通过a[j+1]
),这肯定是不正确的。简单的冒泡排序通常如下所示,例如:
for(int i = NUMBER_OF_ELEMENTS - 1; i > 0; --i)
for(int t = 0; t < i; ++t)
{
if(item [t] greater than [t+1])
{
swap item [t] with [t+1]
}
}
for(int i=元素的个数-1;i>0;--i)
对于(int t=0;t如果你使用C++,你可以使用STL代替数组,然后使用STL算法
< P>如果你使用C++,你可以使用STL代替数组,然后使用STL算法
我想创建一个排序系统
已作为标准库的一部分为您完成:
#包括
#包括
#包括
无效打印编号(int*myArray)
{
std::copy(myArray,myArray+10,std::ostream\u迭代器(std::cout,“,”);
标准::cout
我想创建一个排序系统
已作为标准库的一部分为您完成:
#包括
#包括
#包括
无效打印编号(int*myArray)
{
std::copy(myArray,myArray+10,std::ostream\u迭代器(std::cout,“,”);
std::cout从这里看起来像一个。它是intmain()“隐式int”在C++中不再有效。这看起来很像作业。如果是这样,我们应该把它标记为……使用<代码> <代码>。C++中没有“<代码> <代码>,而且永远不会是。我是唯一一个觉得这个算法只适用于预期输出的人吗?看起来像是从这里来的。它是代码> int()。“隐式int”在C++中不再有效。这看起来是非常的家庭作业。如果是这样,我们应该使用它。使用<代码> <代码>。C++中没有“<代码> <代码>,而且从来没有。我是唯一一个发现这个算法只对预期输出工作的人吗?<代码> STD::排序< /COD>是好的建议。但是,给出了这个建议。在数组是堆栈分配的情况下,这很好——没有理由在这里使用向量。std::sort
是一个很好的建议。但是,如果数组是堆栈分配的,那么这很好——没有理由在这里使用向量。不明白为什么要比较>0
,通常是将左元素与正确的元素,或者它将是strcmp样式的比较函数,在这种情况下,您需要!=0
而不是>0
@Billy:改变了这一点,它只是一个示例。对于整数,它将是item[t]>item[t+1]
,对于字符串,它将是strcmp(item[t],item[t+1])>0
,等等。我不明白为什么>0
是你的比较——通常是比较左元素和右元素,或者是strcmp风格的比较函数,在这种情况下,你需要!=0
而不是>0
@Billy:改变了这一点,这只是一个例子。对于整数,它将d是item[t]>item[t+1]
,对于字符串,它将是strcmp(item[t],item[t+1])>0
,依此类推。