常见数组的排序算法的特点

发布时间 2023-11-07 14:30:48作者: 爱吃砂糖橘的白龙

假设这些排序算法想得到一个升序序列,长度为n。

参考

https://blog.csdn.net/qq_53414724/article/details/125016223
https://zhuanlan.zhihu.com/p/602971700

冒泡排序

冒泡排序从头开始寻找相邻的元素,找到较大的元素放于后面,一直到数组末尾。循环n-1轮,每一轮都从0开始,但结束位置越来越靠近起始位置,第一轮明确最大的元素,第二轮明确第二大的元素,...。代码中i、j指针总是挨着的,满足j=i+1。冒泡排序算法稳定,平均、最差时间复杂度都是O(n^2),最优时间复杂度为O(n),空间复杂度为O(1)。

简单选择排序

简单选择排序循环n轮,每一轮明确一个当前最小的元素、放置于数组最前侧。代码中i、j指针不是挨着的,i指针指向数组最前侧已找到的最小的若干值后一位,j指针从i开始向后遍历至数组末尾,如果碰到arr[j]<arr[i],则进行数值交换,因此每一轮中可能i、j指针指向的值交换多次。简单选择排序算法不稳定,平均、最好、最差时间复杂度都是O(n^2),空间复杂度为O(1)。