首页 > 代码库 > 堆排序
堆排序
第一次实现堆排序,花了近两个小时。
主要还是堆调整,原理网上很多,直接给出运行代码和结果:
代码:
#include <iostream> using namespace std; void adjustHeap(int number[],int k,int length){ int t=number[k]; int i; for(; k*2+1 < length; k=i){ i=k*2+1; if(number[i] < number[i+1] && i<length-1){ i++; } if(number[i] > number[k]){ number[k]=number[i]; number[i]=t; // }else{ break; } } } void buildMaxHeap(int number[],int length){ int i= (length>>1)-1; for(;i >= 0;i--){ adjustHeap(number,i,length); } } void heapSort(int number[],int length){ buildMaxHeap(number,length); for(int i=length-1; i>=0 ;i --){ int temp=number[length-1]; number[length-1] = number[0]; number[0] = temp; adjustHeap(number,0,--length); } } int main(){ int input[8]={2,1,4,3,99,100,56,909}; heapSort(input,8); for(int i=0;i<8;i++){ cout<< input[i] <<" "; } return 0; }
运行结果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。