#include <iostream>
#include <vector>
using namespace std;
void Swap(int &a,int &b)
{
int tmp = a;
a = b;
b = tmp;
}
void Show(vector<int> & vec)
{
vector<int> :: iterator it = vec.begin();
for(it;it != vec.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
}
void Shell_one(vector<int> & vec,int width)
{
int len = vec.size();
int tmp = 0;
int j = 0;
for(int i = width;i < len;++i)
{
tmp = vec[i];
for(j = i - width;j >= 0;j -= width)
{
vec[j+width] = vec[j];
if(vec[j] < tmp)
{
break;
}
}
vec[j + width] = tmp;
}
}
void ShellSort(vector<int> & vec)//时间复杂度O(n1.3 - 1.5) 空间复杂度O(1) 不稳定
{
int n = vec.size();
if(n < 2) return ;
int arr[] = {5,3,1};
int len = sizeof(arr)/sizeof(arr[0]);
for(int i = 0;i < len;++i)
{
Shell_one(vec,arr[i]);
}
}
int main()
{
int arr[10] = {10,9,8,7,6,4,5,2,1,3};
vector<int> vec(arr,arr+10);
Show(vec);
ShellSort(vec);
Show(vec);
}
希尔排序
最新推荐文章于 2024-06-04 00:42:18 发布
18万+

被折叠的 条评论
为什么被折叠?



