数组排序
快速排序
快速排序是一种分治的排序算法,它将一个数组分成两个子数组,然后递归地对子数组进行排序。具体步骤如下:
- 首先选择一个枢轴元素(pivot)。
- 将数组中小于等于枢轴元素的部分移动到数组左侧,大于枢轴元素的部分移动到数组右侧。
- 对左右子数组递归地进行步骤1和步骤2操作。
时间复杂度为O(nlogn),空间复杂度为O(logn)。
归并排序
归并排序是一种分治算法,它将一个数组分成两个子数组,然后递归地对子数组进行排序,最后将两个有序的子数组合并成一个有序的数组。具体步骤如下:
- 递归地把当前序列平均分成两半。
- 对左右子序列分别递归地进行排序。
- 将左右排好序的子序列合并成一个有序序列。
时间复杂度为O(nlogn),空间复杂度为O(n)。
冒泡排序
冒泡排序是一种简单的排序算法,它通过多次遍历列表,比较相邻的元素,并交换它们的位置来完成排序。具体步骤如下:
- 从第一个元素开始,比较相邻的两个元素,如果前一个元素比后一个元素大,则交换这两个元素的位置。
- 对列表中的每个相邻元素做同样的工作,执行完一轮后,最后一个元素会是最大的数。
- 针对所有未排好序的元素重复以上步骤,直至没有任何一对数字需要比较为止。
时间复杂度为O(n^2),空间复杂度为O(1)。
Loading...