堆排序
Posted O了吗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆排序相关的知识,希望对你有一定的参考价值。
#include"iostream" #include"time.h" using namespace std; void show(int *a,int n){ for(int i = 0;i < n;i++){ cout<<a[i]<<ends; } cout<<endl; } void buildheap(int *a,int s,int n){ int temp = a[s]; for(int i = 2 * s + 1;i < n;i = i * 2 + 1){ if(i < n - 1 && a[i] < a[i + 1]){ i++; } if(temp < a[i]){ a[s] = a[i]; s = i; } else{ break; } } a[s] = temp; } //堆排序 void heapsort(int *a,int n){ for(int i = n / 2;i >= 0;i--){ buildheap(a,i,n); } for(i = n - 1;i >= 0;i--){ int temp = a[i]; a[i] = a[0]; a[0] = temp; buildheap(a,0,i); } } int main(){ const int N = 10; int a[N]; srand(time(NULL)); for(int i = 0;i < N;i++){ a[i] = rand() % 10; } show(a,N); heapsort(a,N); show(a,N); return 0; }
以上是关于堆排序的主要内容,如果未能解决你的问题,请参考以下文章