堆排序c语言
来源:互联网 发布:win7开机windows后黑屏 编辑:程序博客网 时间:2024/04/30 17:37
利用最小堆排序// teat.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>#include<fstream>#include<time.h>using namespace::std;#define N 50000+1void PushDown(int first, int n);void Swap(int &a, int &b);int A[N];int main(){int opr;ifstream in;ofstream out;/*in.open("C:\\Users\\asus\\Documents\\Visual Studio 2017\\Projects\\teat\\666.txt");if (in.fail())cout << "ERROR!" << endl;else{for (int opt = 1; opt <N; opt++){in >> A[opt];}}*/srand((unsigned)time(NULL));//设置随机数种子for (int i = 1; i < N; i++){A[i]= (rand() % (N - 1) + 1);//生成随机数}out.open("C:\\Users\\asus\\Documents\\Visual Studio 2017\\Projects\\teat\\output.txt");if (out.fail())cout << "ERROR!" << endl;clock_t start = clock();//建最小堆for (opr = (N-1) / 2; opr >= 1; opr--){PushDown(opr, N-1);}//排序输出for (int t = N-1; t >= 2; t--){Swap(A[1], A[t]);PushDown(1, t - 1);}clock_t end = clock();for (int p = N - 1; p >= 1; p--){out << A[p] << " ";}cout << "time is"<<(double)(end - start);//计算运行时间 return 0;}void PushDown(int first, int n){int temp=first;while (temp <= n / 2){if ((temp == n / 2) && (n % 2 == 0)){if (A[temp] > A[2 * temp]){Swap(A[temp], A[2 * temp]);}temp = n;//exit cycle!!!}else if ((A[temp] > A[2 * temp]) && (A[2 * temp] <= A[temp * 2 + 1])){Swap(A[temp], A[2 * temp]);temp = 2 * temp;}else if ((A[temp] > A[2 * temp + 1] )&&( A[2 * temp + 1] < A[2 * temp])){Swap(A[temp], A[temp * 2 + 1]);temp = temp * 2 + 1;}elsetemp = n;}}void Swap(int &a, int &b){int temp;temp = a;a = b;b = temp;}
阅读全文
0 0
- 堆排序----C语言
- 堆排序C语言
- c语言堆排序
- 堆排序 ----- C语言
- C语言堆排序
- 堆排序c语言
- 堆排序(C语言)
- 堆排序算法(C语言)
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言代码
- 堆排序--C语言实现
- C语言实现堆排序
- C语言 最大堆排序
- 堆排序--C语言实现
- 堆排序C语言实现
- 39-IO流(File对象-练习-深度遍历文件夹)12 40-IO流(File对象-练习-递归)12 41-IO流(File对象-练习-删除目录).
- AI 全面入侵,程序员到了 2040 年还能继续敲代码吗?
- linux安装Mysql报错
- JDBC连接mysql数据库的步骤
- HDOJ 2071 Max Num
- 堆排序c语言
- Vuejs全家桶系列(五)---属性和方法
- JS组件系列——Form表单验证神器: BootstrapValidator
- 程序员,这样面试,你的成功率能达到 90%!
- 关键字过滤文本
- Unity 动画系统
- 开源1897个js
- hibernate之初学总结(4)
- 【Java】基本类型之double(九)