#include<iostream>
#include<ctime>
using namespace std;
#define N 1000000
template<typename Item>
void __shiftDown(Item arr[], int n, int flag){
Item temp = arr[flag];
while(flag*2+1<=n-1){
int j = flag*2+1;
if(j+1<=n-1&&arr[j+1]>arr[j]){
j++;
}
if(temp > arr[j]) break;
arr[flag] = arr[j];
flag = j;
}
arr[flag] = temp;
}
template<typename Item>
void HeapSort(Item arr[], int n){
//堆化
for(int i = (n-2)/2; i >= 0; i--){
__shiftDown(arr, n, i);
}
for(int i = n-1; i>0; i--){
swap(arr[i], arr[0]);
__shiftDown(arr, i, 0);
}
}
int main(){
clock_t start_time = clock();
srand(time(NULL));
int arry[N];
for(int i = 0; i<N;i++){
arry[i]=rand()%10;
}
HeapSort(arry,N);
clock_t end_time = clock();
double divTime = end_time - start_time;
/* for(int i=0;i<N;i++){
cout<<arry[i]<<" ";
}*/
cout<<endl;
cout<<"时间消耗为:"<<divTime/CLOCKS_PER_SEC<<endl;
}
3.普通版堆排序
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 堆定义 生活中需要使用优先队列, 比如cpu调度算法,线程调度算法都需要把优先级高的任务装入一个优先队列Prior...