交换排序基本思想
两两比较待排记录的关键字,一旦发现两个记录的次序与排序的要求相逆,则交换这两个记录的位置,直到表中没有逆序的记录存在为止。
- 冒泡排序
- 快速排序(对冒泡的改进)
<1>冒泡排序
基本思想:序列中相邻的两个元素进行比较,如果前一个元素大于后一个元素,则交换二者位置,接着继续向后循环比较直到最后一个元素,这样一趟下来就可以将最大的那个元素放到最后的位置。完成之后,进行第二趟排序,循环比较直到倒数第二个元素,就可以将第二大元素放于倒数第二个位置......循环以上步骤,直到循环比较到原数组的最后两个元素,排序即可完成。
代码体现:
void bubble_sort(int arr[],int len)
{
for(int i=0;i<len-1;i++) //排序的趟数,n个数就需要排序n-1趟
{
bool flag=true; //一个小小的优化,在某一趟如果没有改变就不再进行最外层循环了
for(int j=0;j<len-i-1;j++) //每一趟中的交换排序
{
if(arr[j]>arr[j+1])
{
swap(arr[j],arr[j+1]);
flag=false; //进入这个判断就证明排序没有完成
}
}
if(flag)
break;
}
}
复杂度分析&#x