日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

冒泡排序 BubbleSort

發布時間:2023/12/9 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 冒泡排序 BubbleSort 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?冒泡排序(bubble sort)

?

?基本思想

重復走訪要排序的元素列,依次比較兩個相鄰的元素,如果順序錯誤就交換。當沒有相鄰元素需要交換時,說明全部元素已經排序完畢。

## 過程模擬:
2 3 4 1 5(從小到大)

第一趟:2 3 1 4 **5** //找到序列中最大值5
第二趟:2 1 3 **4 5** //找到待排序序列 2 3 1 4 中最大值 4
第三趟:1 2 **3 4 5** //找到待排序序列 2 3 1 中最大值 3
第四趟:**1 2 3 4 5** //找到待排序序列 2 3 中最大值2

最終得到目標序列:1 2 3 4 5

?

代碼過程
雙重循環

1. 輸入 $n$ 及數組
2. 外層for循環(第 $i$ 趟):執行 1 到 $n$ - 1次
3. 內層for循環:執行 1 到 $n$ - $i$ 次。
4. if判斷:如果順序錯誤就交換(swap函數)
5. 輸出排序之后的數組

?

?代碼:
~~~
//使用冒泡排序(buubleSort)實現將數組按從小到大的順序排序
#include<iostream>
using namespace std;

//初始化變量及數組
int n;
int arr[1000];


//定義冒泡排序函數
void bubbleSort(int arr[],int n){
?? ?//外層循環執行n-1次
?? ?for(int i=1;i<=n-1;i++){
?? ??? ?//內層循環執行n-i次
?? ??? ?for(int j=1;j<=n-i;j++){
?? ??? ??? ?如果數組中前一個值比后一個值大,代表順序錯誤,swap()函數進行交換
?? ??? ??? ?if(arr[j]>arr[j+1]){
?? ??? ??? ??? ?swap(arr[j],arr[j+1]);
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?//結束函數
?? ?return;
}

//主函數
int main(){
?? ?//輸入數據
?? ?cin>>n;
?? ?for(int i=1;i<=n;i++){
?? ??? ?cin>>arr[i];
?? ?}
? ??
?? ?//執行調用冒牌排序函數
?? ?bubbleSort(arr,n);
? ??
?? ?//輸出排好序后的數組
?? ?for(int i=1;i<=n;i++){
?? ??? ?cout<<arr[i]<<" ";
?? ?}
? ??
?? ?//結束程序
?? ?return 0;
}
~~~

?

其它
- 冒泡排序的**平均時間復雜度為$O(n^2)$**
- 冒泡排序的**最好情況下時間復雜度為$O(n)$**
- 冒泡排序的**最壞情況下時間復雜度為$O(n^2)$**
- 冒泡排序的**空間復雜度為$O(1)$**
- 冒泡排序需使用**關鍵字比較**進行排序,**不占用額外內存**
- 冒泡排序是**穩定**(排序后2個相等鍵值得順序和排序之前它們的順序相同)的排序算法

總結

以上是生活随笔為你收集整理的冒泡排序 BubbleSort的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。