|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<iostream>
using namespace std;
int main()
{
int arr[] = { 7,8,9,4,5,6,3,2,1, };
for (int i = 0; i <= 8; i++)
{
cout << arr[i] << " ";
}
for (int j = 0; j <= 8; j++)
{
for (int k = 0; k <= 9 - k - 1; j++)
{
if (arr[k] > arr[k + 1])
{
int temp = arr[k];
arr[k] = arr[k + 1];
arr[k + 1] = temp;
}
}
for (int j = 0;j <= 8;j++)
{
cout << arr[j] << " ";
}
}
return 0;
}
这段代码存在两个问题:
1. 内部循环的变量应该是k而不是j。因为这个循环的目的是将最大的数放到数组的最后一个位置,所以应该从第一个数开始比较,一直到倒数第二个数,即数组长度减一。
2. 外部循环的变量j每次增加1,但内部循环中的k的范围是在缩小的,应该改成k <= 9 - j - 1。
下面是修改后的代码:
- #include<iostream>
- using namespace std;
- int main()
- {
- int arr[] = { 7,8,9,4,5,6,3,2,1, };
- for (int i = 0; i <= 8; i++)
- {
- cout << arr[ i] << " ";
- }
- for (int j = 0; j <= 8; j++)
- {
- for (int k = 0; k <= 9 - j - 1; k++)
- {
- if (arr[k] > arr[k + 1])
- {
- int temp = arr[k];
- arr[k] = arr[k + 1];
- arr[k + 1] = temp;
- }
- }
- }
- for (int j = 0;j <= 8;j++)
- {
- cout << arr[j] << " ";
- }
- return 0;
- }
复制代码
希望能够帮到你。
|
|