using namespace std
/*
堆排序
*/
void headAdjust(int a[], int k, int len){
a[0] = a[k]
for(int i = 2*k
if(i<len && a[i] < a[i+1]){
i++
}
if(a[0] >= a[i]){
break
}
else{
a[k] = a[i]
k = i
}
}
a[k] = a[0]
}
void buildMaxHeap(int a[], int len){
for(int i = len/2
headAdjust(a, i, len)
}
}
void swap(int a, int b){
int temp = a
a = b
b = temp
}
void heapSort(int a[], int len){
buildMaxHeap(a, len)
for(int i = len
swap(a[i], a[1])
headAdjust(a, 1, i-1)
}
}
int main(){
int arr1[100]
//这里使用100个随机数
int n = 10
for(int i = 1
arr1[i] = rand()
}
cout<<"100个随机数为:"<<endl
for(int i = 1
cout<<arr1[i]<<" "
}
cout<<endl<<"100个随机数排序之后为:"<<endl
buildMaxHeap(arr1, n)
heapSort(arr1, n)
for(int i = 1
cout<<arr1[i]<<" "
}
return 0
}