冒泡排序

#include<iostream>

using namespace std;

int main()

{

int n;

cin>>n;

int a[n];

for(int i=0;i<n;i++)

cin>>a[i];

for(int i=n-1;i>=1;i--)

{

for(int j=0;j<i;j++)

{

if(a[j]>a[j+1])

{

swap(a[j],a[j+1]);

}

}

}

for(int i=0;i<n;i++)

cout<<a[i]<<" ";

return 0;

}

  • 外层 for 循环控制比较轮数,一共进行 n - 1 轮比较,第一轮比较会把最大的元素 “浮” 到数组的末尾,第二轮把次大的元素 “浮” 到倒数第二个位置,依次类推,所以循环变量 i 从 n - 1 开始,每次递减 1,直到 i >= 1 不满足(即 i = 0 时结束)。
  • 内层 for 循环用于每一轮比较中的相邻元素比较和交换操作,循环变量 j 从 0 开始,每次递增 1,直到 j < i 不满足,也就是在每一轮比较中,会对当前未排序部分的相邻元素依次进行比较。如果发现 a[j] > a[j + 1],即前一个元素大于后一个元素,就通过 swap 函数(这个函数在 iostream 头文件所在的标准库中有定义,用于交换两个变量的值)交换这两个元素的位置,这样经过一轮比较后,当前未排序部分的最大元素就会被交换到合适的位置(这一轮比较的最后一个位置)。
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务