1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 冒泡排序 BubbleSort

冒泡排序 BubbleSort

时间:2023-08-28 20:54:36

相关推荐

冒泡排序 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个相等键值得顺序和排序之前它们的顺序相同)的排序算法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。