算法学习之排序:冒泡排序
相邻位不断比较,比出未排序的区域最大/小值逐步交换至未排序区域最右侧,如水泡不断上升
特点:
平均时间复杂度 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;
}