复杂度和稳定性
时间复杂度:平均O(Nln(N)),最好O(N),最差O(NN)
空间复杂度:O(1)
稳定性:不稳定
CPP实现
#include <vector>
#include <stdlib.h>
#include <time.h>
using namespace std;
void shell_sort(vector<int>& v)
{
size_t size = v.size();
int i(0), j(0), tmp(0), gap(0);
for(gap = size / 2; gap > 0; gap /= 2)
for(i = gap; i < size; ++i)
for(j = i - gap; j > 0 && v[j] > v[j + gap]; j -= gap)
swap(v[j], v[j + gap]);
}
int main(int argc, char* argv[])
{
srand(time(NULL));
vector<int> nums;
int size = rand() % 100 + 10;
for(int i = 0; i < size; ++i)
nums.push_back(rand() % 100);
shell_sort(nums);
return 0;
}