C++,希尔排序
来源:互联网 发布:足球看水软件 编辑:程序博客网 时间:2024/06/10 12:42
#include<iostream>
using namespace std;
/*
*希尔排序也是缩小增量排序,其时间复杂度较插入排序要好,因为在最后进行插入排序之前已经基本有序了;
*插入排序的时间复杂度为O(n^2),而希尔排序能缩小到O(n^3/2)
*/
//template <class T>//模版传递指针和数组需注意
//void shell_sort(const *arr(T),const T &n,const T &delt_up,const int &i){
//模版传递指针,数组遇到问题,希望高人指点
void shell_sort(int *arr,int n,int delt_up[],int i){
//此处相当于插入排序,只是间隔变为delt_up[i];
for(int j=delt_up[i];j<n;j++){
int temp=arr[j];
int m=j-delt_up[i];
while(arr[m]>temp&&m>=0){
arr[m+delt_up[i]]=arr[m];
m=m-delt_up[i];
}
arr[m+delt_up[i]]=temp;
}
}
int main(int argc,char *argv[]){
int m=3;//增量个数
int delt_up[]={1,3,5};//增量数组
int n,i;
cin>>n;
int *arr=new int[n];//存放待排序列
for(i=0;i<n;i++){
cin>>arr[i];
}
for(i=0;i<m;i++){
shell_sort(arr,n,delt_up,i);
}
for(i=0;i<n;i++){
cout<<arr[i]<<" ";
}
return 0;
}
using namespace std;
/*
*希尔排序也是缩小增量排序,其时间复杂度较插入排序要好,因为在最后进行插入排序之前已经基本有序了;
*插入排序的时间复杂度为O(n^2),而希尔排序能缩小到O(n^3/2)
*/
//template <class T>//模版传递指针和数组需注意
//void shell_sort(const *arr(T),const T &n,const T &delt_up,const int &i){
//模版传递指针,数组遇到问题,希望高人指点
void shell_sort(int *arr,int n,int delt_up[],int i){
//此处相当于插入排序,只是间隔变为delt_up[i];
for(int j=delt_up[i];j<n;j++){
int temp=arr[j];
int m=j-delt_up[i];
while(arr[m]>temp&&m>=0){
arr[m+delt_up[i]]=arr[m];
m=m-delt_up[i];
}
arr[m+delt_up[i]]=temp;
}
}
int main(int argc,char *argv[]){
int m=3;//增量个数
int delt_up[]={1,3,5};//增量数组
int n,i;
cin>>n;
int *arr=new int[n];//存放待排序列
for(i=0;i<n;i++){
cin>>arr[i];
}
for(i=0;i<m;i++){
shell_sort(arr,n,delt_up,i);
}
for(i=0;i<n;i++){
cout<<arr[i]<<" ";
}
return 0;
}
0 0
- 希尔排序C语言
- c语言希尔排序
- C++,希尔排序
- 希尔排序(c++)
- c++ 希尔排序
- 希尔排序(C语言版)
- C语言希尔排序
- 希尔排序c语言版
- 希尔排序 C语言版
- C语言------希尔排序
- C希尔排序
- C 插入排序 希尔排序
- 希尔排序(C语言)
- C语言希尔排序了解
- 希尔排序C语言代码
- C语言实现希尔排序
- 希尔排序(C语言版)
- 算法 - 希尔排序(C)
- 安卓颜色对应的xml配置值(转载)
- java容器(八)---Java迭代器(转)(iterator详解以及和for循环的区别)
- POJ 2778 DNA Sequence 长度为n且不含m种模式串的字符串种数
- 12.效率
- Protel99分割内电层
- C++,希尔排序
- C02_C语言基础
- toolStripButton调整大小并只显示text
- 设计模式总结
- CentOS 5 VPS上配置pptpd作为VPN服务器
- Oracle中的Hash Join祥解
- 程序员们最常说的谎话是什么?
- sublime 3中文乱码问题解决方案
- Mac之vim普通命令使用