no message
parent
1f32f51010
commit
1a1bbf0748
|
@ -65,6 +65,10 @@ message( "copy net ")
|
|||
file(GLOB NET ${PROJECT_SOURCE_DIR}/src/net/*.h)
|
||||
file(COPY ${NET} DESTINATION ${LIBRARY_OUTPUT_PATH}/inc/
|
||||
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)
|
||||
message("it is windows 32")
|
||||
ELSEIF (UNIX)
|
||||
|
|
|
@ -45,9 +45,46 @@ int selectsort(T *data,uint64_t len,CompareHanlder<T> handle){
|
|||
}
|
||||
}
|
||||
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>
|
||||
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)
|
||||
break;
|
||||
else
|
||||
{ // 父节点小于当前节点,就调换位置,当前节点作为父节点
|
||||
{ // 父节点小于当前节点,就调换位置,当前节点作为父节点,来源于一个抢位置的概念
|
||||
m_heap[c] = m_heap[p];
|
||||
c = p;
|
||||
p = (p-1)/2; // 再把当前节点和上一个父节点在比较大小
|
||||
|
|
Loading…
Reference in New Issue