三、冒泡排序
1.算法思想
基本思想是:相邻两两比较,大的往后排
比较与交换:从数组的第一个元素开始,依次比较相邻的两个元素,如果前一个元素大于后一个元素,就将它们交换位置。这样,每一次比较和交换都会将当前未排序部分的最大元素 "浮" 到最后面。
多次遍历:对数组进行多次遍历,每一次遍历都会将未排序部分的最大元素放到合适的位置上,直到整个数组都被排序。
2.代码实现
//冒泡排序
void Bubble(int* arr, int len)
{
int tmp;
for (int i = 0; i < len-1; i++)//len个数字需要len-1趟,最后一个数字默认有序
{
tmp = arr[i];
for (int j = 0; j +1< len-i; j++)//注意越界问题;len-i提高效率
{
if (arr[j] > arr[j + 1])
{
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
3.复杂度分析
时间复杂度O(n2);空间复杂度O(1);稳定
以上是排序算法第二部分关于插入排序、希尔排序以及冒泡排序的知识,如果有帮助可以点赞收藏一下,会持续更新输出有用的内容,感兴趣可以关注我!