|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<iostream>
using namespace std;
int main()
{
int arr[15]={0};
for(int i=0;i<=14;i++)
{
cin>>arr[i];
}
for(int j=0;j<15-1;j++)
{
for(int k=0;k<15-j-1;j++)
{
if(arr[j]>arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<=14;i++)
{
cout<<arr[i]<<" ";
}
}
冒泡排序的问题出在内层循环的条件判断上。代码中的内层循环条件是 k<15-j-1 ,但是在循环体内却使用了 j 来访问数组元素。这导致内层循环无法正确地比较相邻的元素并进行交换。
正确的内层循环条件应该是 k<15-j-1 ,并且在循环体内使用 k 来访问数组元素。修改后的代码如下:
- #include<iostream>
- using namespace std;
- int main()
- {
- int arr[15]={0};
- for(int i=0;i<=14;i++)
- {
- cin>>arr[ i];
- }
-
- for(int j=0;j<15-1;j++)
- {
- for(int k=0;k<15-j-1;k++)
- {
- if(arr[k]>arr[k+1])
- {
- int temp=arr[k];
- arr[k]=arr[k+1];
- arr[k+1]=temp;
- }
- }
-
- }
- for(int i=0;i<=14;i++)
- {
- cout<<arr[ i]<<" ";
- }
- }
复制代码
这样修改后的代码就能正确地进行冒泡排序了。
|
|