利用交换元素的位置进行排序的方法称作交换排序
常用的交换排序的方法:冒泡排序和快速排序
【冒泡排序】
冒泡排序最好情况时间复杂度O(n),冒泡排序最坏情况下时间复杂度O(n^2)
冒泡排序空间复杂度O(1)
冒泡排序是一种稳定的排序算法
void BubbleSort(int* array, int size)
{
int i = 0;
for (i = 0; i < size; i++)
{
int j = 0;
for (j = 0; j < size - 1 -i; j++)
{
if (array[j] > array[j + 1])
Swap(&array[j], &array[j + 1]);
}
}
}
交换函数
void Swap(int* pLeft, int* pRight)
{
int tmp;
assert(pLeft);
assert(pRight);
tmp = *pLeft;
*pLeft = *pRight;
*pRight = tmp;
}
【快速排序】
快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基
本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将
待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序
列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元
素都排列在相应位置上为止。
将区间按照基准值划分为左右两半部分的常见方式有:
<