什么是冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
(这段话引用自菜鸟教程)
冒泡排序的基本思想
重复地走访要排序的元素列,依次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来。
走访元素的工作要重复地进行,直到没有相邻元素需要交换时,说明全部元素已经排序完成。
走访的元素———比作是一个“气泡”,“气泡“一步一步向上翻滚,完成排序。
冒泡排序的可视化动画
代码展示
从大到小排序
#inlcude <iostream>
using namespace std;
int main(){
int a[101];
int n;
cin>>n;
for(int i = 1;i<=n;i++){
cin>>a[i];
}
//每趟排好一个数字,第一趟结束把最大值排好到最后一位
for(int k = 1;k <= n-1;k++){
for(int i=1;i<=n-k;i++){
if(a[i]>a[i+1]){//顺序错误
swap(a[i],a[i+1]);
}
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
}
从小到大排序
#inlcude <iostream>
using namespace std;
int main(){
int a[101];
int n,flag;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
//一共n-1趟
for(int k=1;k<=n-1;k++) {
//每趟排好一个数字,第一趟结束把最大值排好到最后一位
flag=0;
for(int i=1;i<=n-k;i++){
if(a[i]>a[i+1]){//顺序错误
swap(a[i],a[i+1]);
flag=1;
}
}
if(flag==0){ //这趟排序中没有出现交换
break;//说明已经排好序了,break终止循环
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
}
标签:数列,int,元素,走访,C++,冒泡排序,讲解,排序
From: https://www.cnblogs.com/hujiaohuxue8-bilibili/p/CppBubbleSort.html