|
@@ -60,7 +60,8 @@ namespace nanxing{
|
|
|
data[j]=middle;
|
|
|
}
|
|
|
|
|
|
- else{
|
|
|
+ else
|
|
|
+ {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -106,7 +107,8 @@ namespace nanxing{
|
|
|
data[j]=data[j-1];
|
|
|
data[j-1]=middle;
|
|
|
}
|
|
|
- else{
|
|
|
+ else
|
|
|
+ {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -149,8 +151,6 @@ namespace nanxing{
|
|
|
{
|
|
|
build_heap(data,i,size);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
for(size_t i=size-1;i>0;i--)
|
|
|
{
|
|
|
middle=data[0];
|
|
@@ -158,10 +158,8 @@ namespace nanxing{
|
|
|
data[i]=middle;
|
|
|
build_heap(data,0,i);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static void Hill_sort(T data,size_t jump,size_t size) //希尔排序
|
|
|
{
|
|
|
using ptr_type=nanxing::remove_pointer<T>::type;
|
|
@@ -175,7 +173,6 @@ namespace nanxing{
|
|
|
{
|
|
|
for(int j=i+jump;j<size;j+=jump)
|
|
|
{
|
|
|
-
|
|
|
for(int k=j;k>=jump;k-=jump)
|
|
|
{
|
|
|
if(data[k]<data[k-jump])
|
|
@@ -184,18 +181,15 @@ namespace nanxing{
|
|
|
data[k-jump]=data[k];
|
|
|
data[k]=middle;
|
|
|
}
|
|
|
-
|
|
|
else{
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
strait_insert_sort(data,size);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static void Print(T data,size_t size)
|
|
|
{
|
|
|
for(int i=0;i<size-1;i++)
|
|
@@ -206,7 +200,6 @@ namespace nanxing{
|
|
|
}
|
|
|
|
|
|
private:
|
|
|
-
|
|
|
static void build_heap(T data ,size_t S,size_t size) //除了S之外的所有点都满足大顶堆的定义
|
|
|
{
|
|
|
using ptr_type=typename nanxing::remove_pointer<T>::type;
|
|
@@ -218,8 +211,8 @@ namespace nanxing{
|
|
|
{
|
|
|
j++;
|
|
|
}
|
|
|
- if(middle>data[j]){
|
|
|
-
|
|
|
+ if(middle>data[j])
|
|
|
+ {
|
|
|
break;
|
|
|
}
|
|
|
else{
|
|
@@ -232,10 +225,6 @@ namespace nanxing{
|
|
|
|
|
|
private:
|
|
|
unsigned int amount;
|
|
|
- //T* sort_data_ptr; //指向需要排序的数据(一个数组或者一个vector之类的指针)
|
|
|
- //T& sort_data_ptr; //原始数据的引用
|
|
|
-
|
|
|
};
|
|
|
-
|
|
|
}
|
|
|
#endif
|