vlambda博客
学习文章列表

算法学习之排序:冒泡排序

相邻位不断比较,比出未排序的区域最大/小值逐步交换至未排序区域最右侧,如水泡不断上升

特点:

平均时间复杂度 O(n^2) 最好时间复杂度 O(n)  最坏时间复杂度 O(n^2)

稳定排序

内排序



//冒泡算法//vector 如何使用 迭代器//模板如何使用,冒泡如何改进template<typename T1>void BubbleSort(T1 vet[],const int size){ int i = 0; for (; i < size; i++) {    //标记位,若一次都未进行交换,说明目前已经有序 bool flag = true; int temp;    //从1开始防止越界,<size-i 为已排序区域 for (int j = 1; j < size-i; j++) {      //升序 if (vet[j - 1] > vet[j]) {        //swap的实现:还有位操作 temp = vet[j - 1]; vet[j - 1] = vet[j]; vet[j] = temp; flag = false; } } if (flag) { break; } }
return;}