什么是冒泡排序
冒泡排序(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;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/550414.html
標籤:其他