冒泡排序的寓意为:元素越轻,它就要像水泡一样向上冒,就是比较相邻的元素,如果后面的元素比前面的元素“轻”,则交换元素的位置,然后再与下一个元素比较,直到最后一个元素,然后再从第一个元素开始进行比较,一直到排序完成。
C++实现:
#include <iostream>
#include <vector>
using namespace std;
template<typename T>
void BubbleSort(vector<T> &vec);
int main()
{
int arr[10] = {8, 3, 10, 49, 2, 6, 13, 5, 14, 7};
vector<int> vec(&arr[0], &arr[10]);
BubbleSort(vec);
return 0;
}
template<typename T>
void BubbleSort(vector<T> &vec)
{
int VSize = vec.size();
if (VSize < 1)
return;
if (1 == VSize)
{
cout << "Only one element in array: " << vec[0] << endl;
return;
}
for (int vIdx = 0; vIdx < VSize-1; vIdx++)
{
for (int uIdx = 0; uIdx < (VSize - vIdx - 1); uIdx++)
{
if (vec[uIdx] > vec[uIdx + 1])
{
vec[uIdx] ^= vec[uIdx + 1];
vec[uIdx + 1] ^= vec[uIdx];
vec[uIdx] ^= vec[uIdx + 1];
}
}
}
for (int vIdx = 0; vIdx < VSize; vIdx++)
{
cout << "value in " << vIdx << " is " << vec[vIdx] << endl;
}
return;
}