冒泡排序不能正常工作
Bubble sort not working exactly
程序可以运行,但问题是排序后的数字没有出现。它带来的只是 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 方法中声明了要排序的整数数组,因此您没有机会在该方法之外访问已排序的数组来打印它。
这是您的程序的完全重写版本:
#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();
}
程序可以运行,但问题是排序后的数字没有出现。它带来的只是 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 方法中声明了要排序的整数数组,因此您没有机会在该方法之外访问已排序的数组来打印它。
这是您的程序的完全重写版本:
#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();
}