冒泡排序

来源:互联网 发布:云计算工程师好干吗 编辑:程序博客网 时间:2024/06/08 07:55

冒泡排序算法

原理:

         冒泡排序是交换排序的一种,是一种较简单的排序算法,它重复的走访要排序的数组,一次比较两个元素,如果顺序错误就交换,直到没有要交换的,算法终止。

步骤:

         1.比较相邻元素,如果第一个比第二个大,就交换(从小到大排)。

         2.对每一对相邻元素作同样工作,依次比较。

         3.针对所有元素重复以上步骤,除了最后一个。

         4.要排序元素会越来越少,直到没有数字要比较,即算法终止。

时间复杂度:

         O(N^2)

空间复杂度:

         O(1)

性能:

         冒泡排序是稳定算法(冒泡排序是单趟排序,不存在当有两个相同元素时需要交换的场景)

代码实现:

#include <iostream>#include <assert.h>using namespace std;//冒泡排序,从小到大void BubbleSort(int* arr, int len){assert(arr);for (int i = 0; i < len - 1; ++i){for (int j = 0; j < len - i - 1; ++j){if (arr[i] > arr[j]){int temp = arr[j];arr[j] = arr[i];arr[i] = temp;}}}}void Print(int* arr, int len)     //打印{for (int i = 0; i < len; ++i){cout << arr[i] << " ";}cout << endl;}


#include "BubbleSort.h"void TestBubbleSort(){int arr[] = { 3, 6, 1, 2, 0, 888, 666, 23, -1, 45, -100000000, 67, 4, 5 };int len = sizeof(arr) / sizeof(arr[0]);cout << "未排序数据:" << "";Print(arr, len);BubbleSort(arr, len);cout << "已排序数据:" << "";Print(arr, len);}int main(){TestBubbleSort();return 0;}




6 2
原创粉丝点击