为了能找到工作,开始记录一下找工作可能用到的知识点
希尔排序
稳定性为不稳定
时间复杂度最差,最好,平均O(n^1.3)
空间复杂度
算法逻辑
希尔排序是针对直接插入排序的一种改进,即按步长分组进行直接插入排序,步长每次循环后减少为原来的一半
C++代码实现
#include <vector>
class Solution {
public:
std::vector<int> sortArray(std::vector<int>& nums) {
int n = nums.size();
for (int gap = n / 2; gap > 0; gap /= 2) {
for (int i = gap; i < n; ++i) {
int temp = nums[i];
int j = i;
while (j >= gap && nums[j - gap] > temp) {
nums[j] = nums[j - gap];
j -= gap;
}
nums[j] = temp;
}
}
return nums;
}
};
这次能通过了,时间复杂度下降