Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++中数组和值的排序_C++_Arrays_Sorting - Fatal编程技术网

C++中数组和值的排序

C++中数组和值的排序,c++,arrays,sorting,C++,Arrays,Sorting,这个程序没有给我一个输出。。。我该怎么办?我什么都试过了,但执行部分就是不行?我该怎么办 您将assign=与comaprison=混淆。whilei=x将x分配给i,然后计算i,所以它等于whilex,如果x为0,则它永远不会运行,否则它将无限 你的循环仍然是无止境的。以i==3时的固定循环为例。我从来没有在这个循环中被修改过,并且没有中断或返回,所以即使是固定版本也会运行endlessy。但这是一个你需要解决的设计问题。也许在所有这些“如果”之后还应该有一个{break;} 您仍然会得到错误

这个程序没有给我一个输出。。。我该怎么办?我什么都试过了,但执行部分就是不行?我该怎么办

您将assign=与comaprison=混淆。whilei=x将x分配给i,然后计算i,所以它等于whilex,如果x为0,则它永远不会运行,否则它将无限

你的循环仍然是无止境的。以i==3时的固定循环为例。我从来没有在这个循环中被修改过,并且没有中断或返回,所以即使是固定版本也会运行endlessy。但这是一个你需要解决的设计问题。也许在所有这些“如果”之后还应该有一个{break;}

您仍然会得到错误的结果,因为您交换了变量a、b、c、d、e、f和g的值,但从不修改数组。但是,最后,您将打印数组的值。数组不按引用存储项,而是复制其值。为什么要使用这么多变量而不直接对数组进行操作

如果。。每段时间的阻塞都是无用的。例如,仔细查看以下代码:

#include <iostream>
using namespace std;

int main() {
    int a=70, b=40, c=5, d=1, e=-20, f=90, g=2, mid;
    int array[7]={a, b, c, d, e, f, g};
    for (int i = 0; i<=5; i++) {
        while (i=0) {
            if (a>b && a>c && a>d && a>e && a>f && a>g) {
                mid=g;
                g=a;
                a=mid;
            }
                else if (b>a && b>c && b>d && b>e && b>f && b>g) {
                    mid=g;
                    g=b;
                    b=mid;
                }
                else if (c>a && c>b && c>d && c>e && c>f && c>g) {
                    mid=g;
                    g=c;
                    c=mid;
                }
                else if (d>a && d>c && d>b && d>e && d>f && d>g) {
                    mid=g;
                    g=d;
                    d=mid;
                }
                else if (e>a && e>c && e>d && e>b && e>f && e>g) {
                    mid=g;
                    g=e;
                    e=mid;
                }
                else if (f>a && f>c && f>d && f>e && f>b && f>g) {
                    mid=g;
                    g=f;
                    f=mid;
                }
                else if (g>a && g>c && g>d && g>e && g>f && g>b) {
                    mid=g;
                    g=g;
                    g=mid;
                }
        }
        while (i=1) {
            if (a>b && a>c && a>d && a>e && a>f) {
                mid=f;
                f=a;
                a=mid;
            }
                else if (b>a && b>c && b>d && b>e && b>f) {
                    mid=f;
                    f=b;
                    b=mid;
                }
                else if (c>a && c>b && c>d && c>e && c>f) {
                    mid=f;
                    f=c;
                    c=mid;
                }
                else if (d>a && d>c && d>b && d>e && d>f) {
                    mid=f;
                    f=d;
                    d=mid;
                }
                else if (e>a && e>c && e>d && e>b && e>f) {
                    mid=f;
                    f=e;
                    e=mid;
                }
                else if (f>a && f>c && f>d && f>e && f>b) {
                    mid=f;
                    f=b;
                    b=mid;
                }
        }
        while (i=2) {
            if (a>b && a>c && a>d && a>e) {
                mid=e;
                e=a;
                a=mid;
            }
                else if (b>a && b>c && b>d && b>e) {
                    mid=e;
                    e=b;
                    b=mid;
                }
                else if (c>a && c>b && c>d && c>e) {
                    mid=e;
                    e=c;
                    c=mid;
                }
                else if (d>a && d>c && d>b && d>e) {
                    mid=e;
                    e=d;
                    d=mid;
                }
                else if (e>a && e>c && e>d && e>b) {
                    mid=e;
                    e=e;
                    e=mid;
                }

        }
        while (i=3) {
            if (a>b && a>c && a>d) {
                mid=d;
                d=a;
                a=mid;
            }
                else if (b>a && b>c && b>d) {
                    mid=d;
                    d=b;
                    b=mid;
                }
                else if (c>a && c>b && c>d) {
                    mid=d;
                    d=c;
                    c=mid;
                }
                else if (d>a && d>c && d>b) {
                    mid=d;
                    d=d;
                    d=mid;
                }

        }
        while (i=4) {
            if (a>b && a>c) {
                mid=c;
                c=a;
                a=mid;
            }
                else if (b>a && b>c) {
                    mid=c;
                    c=b;
                    b=mid;
                }
                else if (c>a && c>b) {
                    mid=c;
                    c=c;
                    c=mid;
                }


        }
        while (i=5) {
            if (a>b) {
                mid=b;
                b=a;
                a=mid;
            }
                else if (b>a) {
                    mid=b;
                    b=b;
                    b=mid;
                }
        }
    }

    for (int k=0; k<7; k++){
        cout<<array[k]<<" ";
    }

}
它将d的值赋给d。两次

正如评论中已经提到的,排序是在标准库中实现的。使用而不是编写自己的排序函数:

mid=d;
d=d;
d=mid;

您可以使用std或boost库进行排序。或者你可以自己编写代码。请通读下面的代码

std::sort(std::begin(array), std::end(array));
以上代码表示升序


关于降序,请参考:

int数组[7]={70,40,5,1,-20,90,3}有什么问题;std::sortstd::beginarray,std::endarray;?这些发布限制的目的是,用户给出更详细的错误描述,而不是该程序不给我输出。。。我该怎么办?我什么都试过了,并不是说他在这个问题上打了一个填充墙。我该怎么办?如果您的代码意外地没有到达某个部分,请查看发生这种情况的原因。至于您的问题,请考虑您在数组初始化中做了什么,以及更改了哪些变量。你真的修改了数组中的元素吗?也许你应该从一开始就投资并开始阅读?最后,请花一些时间刷新或实际阅读。通常,如果x为0,whilei=x将永远不会运行,否则将是一个无限循环。你把assign=和comaprison=搞混了,这不是问题所在。请不要做他的家庭作业。真正的答案是,除了其他问题外,他还混淆了。这会导致无休止的循环,因此没有输出。请更正@GoswinvonBrederlow,但我没有做他的作业。我只是告诉他正确的排序方式。什么是正确的排序方式取决于许多因素。为什么会是插入式排序?OP还试图实现一种硬编码的冒泡排序。请不要把完整的代码扔给别人,尤其是当他们没有要求你这么做的时候。它导致了一场灾难。
#include<iostream> 
using namespace std;

void selectionSort(int a[], int n) {
   int i, j, min, temp;
   for (i = 0; i < n - 1; i++) {
      min = i;
      for (j = i + 1; j < n; j++)
         if (a[j] < a[min])
            min = j;
      temp = a[i];
      a[i] = a[min];
      a[min] = temp;
   }
}
int main() {
   int a[] = { 22, 91, 35, 78, 10, 8, 75, 99, 1, 67 };
   int n = sizeof(a)/ sizeof(a[0]);
   int i;
   cout<<"Given array is:"<<endl;
   for (i = 0; i < n; i++)
   cout<< a[i] <<" ";
   cout<<endl;
   selectionSort(a, n);      // calling my function selection sort. This will sort as ascending order

   for (i = 0; i < n; i++)  
   cout<< a[i] <<" ";       // Printing sorted array
   return 0;
}