冒泡排序

来源:互联网 发布:中博软件学院 编辑:程序博客网 时间:2024/06/05 19:27

冒泡排序原理为,重复的遍历数列,当后面的数小于(大于)前面的数,则交换两个数,直到没有要交换的数据为止。对于n个数的数列,时间复杂度为o(n^2)。

优化的冒泡排序原理为,设置标志位。通过判断标志位,判断一次遍历数列后,是否有数列进行交换。如果一次遍历数列后,并没有数据进行交换,则证明数列是有序的。对于n个数的数列,时间复杂度为o(n^2)。

冒泡排序最差空间复杂度:总共O(n),需要辅助空间O(1)

优化的冒泡排序算法如下:

template <typename T>void Swap(T &t1, T &t2){T temp;temp = t1;t1 = t2;t2 = temp;}template <typename T>void bubblingSort(T &t, int length){bool bFlag = true;for (size_t i = 0; i < length - 1; i++){ for (size_t j = 0; j < length - 1 - i; j++){if (t[j] > t[j + 1]){Swap(t[j], t[j + 1]);bFlag = false;//cout << t[j] << endl;}}if (bFlag)return;}}



0 0
原创粉丝点击