气泡排序不完全有效
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
显然是错误的。循环将导致数组边界溢出。
另一个问题是,您不会以任何方式输出排序数组。您只需尝试调用排序方法。此外,您声明要在排序方法中排序的整数数组,因此您没有机会访问此方法之外的排序数组来打印它。
这是程序的完全重新设计版本:
#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();
}
相关文章:
- 自制的上衣:看起来一样,但不完全相同
- 我不完全确定此代码的行为.有人可以向我解释一下吗?
- 系统包括在分布之间不完全一致
- 我不完全确定这个大O的复杂性
- 两个不完全相同的函数指针是否兼容
- 气泡排序不完全有效
- 作用域在两个类实现之间不完全独立
- C++单例 — 不完全C++ 11 标准
- 不完全理解这部分代码
- BOOST_STRONG_TYPEDEF几乎但不完全像它的基础
- 提升async_read_some不完全异步
- glDrawPixels输出一些像素,其RGB值不完全达到预期
- 交换两个阵列而不完全分配第三个 (C++)
- 添加和删除文件片段以不完全重写它的最有效方法是什么
- 不完全为整型的结构和枚举
- 为什么BOOST_FOREACH不完全等同于手动编码
- 变量的不完全类型-尽管我认为我已经正确地向前声明了
- 不完全确定如何使用多继承c#的接口
- 什么是有效的完全宾语
- 反不完全贝塔函数在C++中的快速实现