Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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++_Bubble Sort - Fatal编程技术网

C++ 气泡排序不完全工作

C++ 气泡排序不完全工作,c++,bubble-sort,C++,Bubble Sort,程序运行正常,但问题是排序的数字没有出现。它只显示了1,仅此而已。错误在哪里 #include <iostream> using namespace std; int const N = 20; void pirmaisMasivs(int N); int main (){ cout << "Numbers being sorted - 5,4,2,6,1,3,8,9,10,7 > " << pirmaisMasivs; } void

程序运行正常,但问题是排序的数字没有出现。它只显示了1,仅此而已。错误在哪里

#include <iostream>

using namespace std;

int const N = 20;

void pirmaisMasivs(int N);

int main (){

 cout << "Numbers being sorted - 5,4,2,6,1,3,8,9,10,7 > " << pirmaisMasivs;

}


void pirmaisMasivs(int N){
 int temp;
 int masivs[10] = {5,4,2,6,1,3,8,9,10,7};
 for( int i = 0; i < N - 1; i++ ){
    for( int j = 0; j < N - 1; j++ ){
        if( masivs[ j ] > masivs[ j + 1 ]){
        temp = masivs[ j ]; 
        masivs[ j ] = masivs[ j + 1];
        masivs[ j + 1 ] = temp;
 }
 }
 }


}

您的代码有几个问题

首先,将要排序的数字总数声明为int const N=20;,但后来,您使用10作为固定的文字计数。N=20显然是错的。循环将导致数组边界溢出

另一个问题是,您没有以任何方式输出排序数组。 您只需尝试调用sort方法。此外,您声明要在sort方法中排序的整数数组,因此您没有机会访问此方法之外的排序数组来打印它

这是您的程序的一个完全返工版本:

#include <iostream>

using namespace std;

int const N = 10;
int masivs[N] = {5,4,2,6,1,3,8,9,10,7};

void pirmaisMasivs() {   
    int temp;
    for( int i = 0; i < N - 1; i++ ) {
        for( int j = 0; j < N - 1; j++ ) {
            if( masivs[ j ] > masivs[ j + 1 ]) {
                temp = masivs[ j ]; 
                masivs[ j ] = masivs[ j + 1];
                masivs[ j + 1 ] = temp;
            }
        }
    }
}

void printMasivs() {
    for( int i = 0; i < N; i++ ) {
        if ( i == 0 ) {
            cout << masivs[ i ];
        }
        else {
            cout << ", ";
            cout << masivs[ i ];            
        }
    }
}

int main () {
    cout << "Numbers being sorted:\n";
    printMasivs();
    cout << "\n";
    pirmaisMasivs();
    cout << "\n";
    printMasivs();
}

您希望如何将已排序的数字带出来?还是我错了?排序函数中也有UB。您将通过数组的末尾。然后重新开始。