💡 思路:外层双指针,内层选 pivot,拷贝指针并左右缩小范围。 🕙 时间复杂度:O(nlogn)。证明很复杂 📂 空间复杂度:O(n)。需要栈空间
💡 思路:外左内中始;内层逐步把新值插入到左侧有序组中 🕙 时间复杂度:O(n^2)。 📂 空间复杂度:O(1)。插入排序是原地排序算法。 1. 插入排序,分成左右两个子数组,左侧有序,右侧无序;内层循环把右侧逐一插入到左侧,即把左侧有序组的数值依次右移一位;不然就写成其他排序了。
💡 思路:外左内左始;内层遍历后交换。 🕙 时间复杂度:O(n^2)。 📂 空间复杂度:O(1)。选择排序是原地排序算法。 1. 选择排序,内层循环是遍历找到极值然后交换,不然就写成其他排序了。
💡 思路:外左内右始;内层两两相邻比较。 🕙 时间复杂度:O(n^2)。 📂 空间复杂度:O(1)。冒泡排序是原地排序算法。 1. 冒泡排序,内层是两两相邻比较,不然就写成其他排序了。 2. 内层排序前有一个优化,如果本轮其他数字都是有序的,就别排了,提前终止。这样除非一开始是逆序,否则时间复杂度一定是略小于 O(N^2)