no message
parent
1f32f51010
commit
1a1bbf0748
|
@ -65,6 +65,10 @@ message( "copy net ")
|
||||||
file(GLOB NET ${PROJECT_SOURCE_DIR}/src/net/*.h)
|
file(GLOB NET ${PROJECT_SOURCE_DIR}/src/net/*.h)
|
||||||
file(COPY ${NET} DESTINATION ${LIBRARY_OUTPUT_PATH}/inc/
|
file(COPY ${NET} DESTINATION ${LIBRARY_OUTPUT_PATH}/inc/
|
||||||
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE GROUP_READ WORLD_READ)
|
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE GROUP_READ WORLD_READ)
|
||||||
|
|
||||||
|
file(GLOB ALGORITHM ${PROJECT_SOURCE_DIR}/src/algorithm/*)
|
||||||
|
file(COPY ${ALGORITHM} DESTINATION ${LIBRARY_OUTPUT_PATH}/inc/
|
||||||
|
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE GROUP_READ WORLD_READ)
|
||||||
IF (WIN32)
|
IF (WIN32)
|
||||||
message("it is windows 32")
|
message("it is windows 32")
|
||||||
ELSEIF (UNIX)
|
ELSEIF (UNIX)
|
||||||
|
|
|
@ -45,9 +45,46 @@ int selectsort(T *data,uint64_t len,CompareHanlder<T> handle){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static void adjustHeap(T []arr,int i,int length) {
|
static void adjustHeap(T []arr,int i,uint32_t len) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
static void maxheap_filterup(T *heapptr,uint32_t pos,uint32_t len)
|
||||||
|
{
|
||||||
|
uint32_t current = pos; // 当前节点(current)的位置
|
||||||
|
int parent = (current - 1)/2; // 父(parent)结点的位置
|
||||||
|
int tmp = heapptr[current]; // 当前节点(current)的大小
|
||||||
|
|
||||||
|
while(current > 0)
|
||||||
|
{
|
||||||
|
// 父节点大于当前节点
|
||||||
|
if(heapptr[parent] >= tmp)
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
{ // 父节点小于当前节点,就调换位置,当前节点作为父节点,来源于一个抢位置的概念
|
||||||
|
heapptr[current] = heapptr[parent];
|
||||||
|
current = parent;
|
||||||
|
parent = (parent - 1)/2; // 再把当前节点和上一个父节点在比较大小
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 找到合适的索引
|
||||||
|
heapptr[current] = tmp; //最后把设置值
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
int heapinert(T *heapptr,T data,uint32_t pos,uint32_t len)
|
||||||
|
{
|
||||||
|
// 如果"堆"已满,则返回
|
||||||
|
if(pos == len)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
m_heap[pos] = data; // 将"数组"插在表尾
|
||||||
|
heapfilterup(pos); // 向上调整堆
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
int heapsort(T *data,uint64_t len,CompareHanlder<T> handle){
|
int heapsort(T *data,uint64_t len,CompareHanlder<T> handle){
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ static void maxheap_filterup(int start)
|
||||||
if(m_heap[p] >= tmp)
|
if(m_heap[p] >= tmp)
|
||||||
break;
|
break;
|
||||||
else
|
else
|
||||||
{ // 父节点小于当前节点,就调换位置,当前节点作为父节点
|
{ // 父节点小于当前节点,就调换位置,当前节点作为父节点,来源于一个抢位置的概念
|
||||||
m_heap[c] = m_heap[p];
|
m_heap[c] = m_heap[p];
|
||||||
c = p;
|
c = p;
|
||||||
p = (p-1)/2; // 再把当前节点和上一个父节点在比较大小
|
p = (p-1)/2; // 再把当前节点和上一个父节点在比较大小
|
||||||
|
|
Loading…
Reference in New Issue