首页 > 代码库 > 堆排序
堆排序
//堆排序//①维护堆 void max_heapify(int *ptr,int index,int len){ index = index + 1; int left = index << 1; int right = (index << 1) + 1; int largest = index; if(left <= len && ptr[left - 1] > ptr[index - 1]) largest = left; if(right <= len && ptr[right - 1] > ptr[largest - 1]) largest = right; if(largest != index) { swap(&ptr[index - 1],&ptr[largest - 1]); max_heapify(ptr,largest-1,len); } } //②建立堆void build_max_heap(int* ptr,int len){ for(int i = len >> 1; i >= 0; --i) { max_heapify(ptr,i,len); }} //③堆排序void heapSort(int* ptr,int len){ build_max_heap(ptr,len); for(int i = len - 1;i>0;--i) { swap(&ptr[0],&ptr[i]); max_heapify(ptr,0,i); }} int main(){ int a[] = {2,23,45,1,8,2,0}; for(int i =0; i <= 6; ++i) { std::cout << a[i] << " "; } cout << endl; //mergeSort(a,0,6); //quickSort(a,0,6); heapSort(a,7); for(int i =0; i <= 6; ++i) { std::cout << a[i] << " "; } std::cout << std::endl; return 0;}
堆排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。