📄 shellsort.h
字号:
#ifndef SHELLSORT_H
#define SHELLSORT_H
#include<iostream.h>
template<class Elem>
class ShellSort:public sort<Elem>
{
public:
ShellSort(){compareNum = 0 ; moveNum = 0;};
virtual void Sorts(Elem Array[], int n);////
void print_e(Elem Array[], int n);
private:
int compareNum;/////比较次数
int moveNum;/////移动次数
};
template<class Elem>
void ShellSort<Elem>::Sorts(Elem Array[] , int n )
{
for(int delta = n/2 ; delta > 0 ; delta /= 2)
{
for(int j = 0; j < delta ; j++)
{
//外层是选出子序列,内层是直接插入排序的对各个子序列进行比较
for(int k = delta ; k < n ; k += delta)
{
for(int l = k ; l > 0 ; l -= delta)////for(int l = k ; l >= delta ; l -= delta)
{
compareNum++;
if (compare(Array[l], Array[l-delta]) == -1)
{
swap(Array, l, l-1);//swap(Array,l,l-delta);
moveNum++;
}
else
break;
}
}
}
}
}
template<class Elem>
void ShellSort<Elem>::print_e(Elem Array[], int n)
{
cout<<" 希尔排序法 "<<endl;
cout<<"+++++++++++++++++++++++++++"<<endl;
cout<<"比较次数:"<<compareNum<<endl;
cout<<"移动次数:"<<moveNum<<endl;
//print(Array , n);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -