排序算法之冒泡排序

来源:互联网 发布:太原高达软件 编辑:程序博客网 时间:2024/06/08 17:37
/*======================================================================================冒泡排序:对于 0 到 N-1 之间的每一个 i,将 a[i] 与 a[N-1] 从右向左依次交换,将该范围上最大或最小的数放到i上========================================================================================最差时间分析:O(n2)     平均时间复杂度:O(n2)     稳定度:稳定     空间复杂度:O(1)======================================================================================*/#include<iostream>#include<vector>using namespace std;// 交换两个参数的值template <typename T> // 函数模板 以适应各种类型void exch(T &a, T &b) {  T i = a;a = b;b = i;}// 互换两个参数的值template <typename T> // 函数模板 以适应各种类型void exch(vector<T>&arr, const int a,const int b) { T i = arr[a];arr[a] = arr[b];arr[b] = i;}/*冒泡排序*/template <typename T>// 函数模板 以适应各种类型void sort_Bubble(vector<T>&a) {int n = a.size();for (int i = 1; i < n; i++) {for (int j = n-1; j >i; j--) {if (a[j] < a[j - 1]) exch(a, j, j - 1);}}}int main() {vector<int>arr = { 1,3,5,1455,75,225,995,2,233,58,899,55 };sort_Bubble(arr);for (int i = 0; i < arr.size(); i++) {cout << arr[i] << " ";}/*for (auto &i : arr) {  // 自动查看arr数组类型,每个循环i自动+1 ,i绑定 arr[i]cout << i << " ";}*/cout << "\n";system("pause");  //暂停以显示return 0;}