冒泡排序算法是一种简单的排序算法,它是稳定的,其时间复杂度为O(N^2),空间复杂度为O(1),一般而言不会用到这种排序方法,但这是初学者必学的排序方法之一。
算法代码实现:
template <typename T>
void BubbleSort(T *array, const int size)
{
assert(NULL != array && size > 0);
if(size == 1)
return;
for(int i = 0; i < (int)size-1; i++)
{
for(int j = size-1; j > i; j--)
{
if(Less<T>()(array[j], array[j-1]))
swap(array[j], array[j-1]);
}
}
}
测试代码:
void test6()
{
int arr[100] = { 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
srand((unsigned int)time(0));
for(int i = 0; i < sz; i++) //Assign values with random numbers
{
arr[i] = rand() % sz;
}
for(int i = 0; i < sz; i++) //print array
cout << arr[i] << " ";
cout << endl << endl << endl << "sort:" << endl;
BubbleSort(arr, sz); //sort
for(int i = 0; i < sz; i++) //print array
cout << arr[i] << " ";
cout << endl;
for(int i = 1; i < sz; i++) //check that the sort is correct
{
if(Less<int>()(arr[i], arr[i-1]))
cout << "sort error! " << i << endl;
}
}
排序结果: