交换排序
交换排序一般对待排序数组中的元素两两比较,不满足条件则交换,直到排序完成。
典型的交换排序有:冒泡排序和快速排序
冒泡排序
在冒泡排序过程中,数组的尾部会渐渐有序,有序的数组尾部慢慢边长,我把渐渐有序部分称为有序子数组,其余部分称为无序子数组,便于理解。
冒泡排序每一次大循环都会筛选出无序子数组中最大(小)的值放入有序子数组中,当一次大循环判断后,无序子数组有序时,循环可以中断。可以让flag=1,在无序子数组已经有序时flag=0,排序完成,减少非最坏情况下比较次数。
冒泡排序代码
void BubbleSort(int A[], int n)
{
int flag = 1;
for (int i = n - 1; i >= 1 && flag == 1; i--)
{
flag = 0;
for (int j = 0; j < i; j++)
{
if (A[j]