第十四周上机实践——项目1-排序函数模板
2016-06-01 22:52
393 查看
/* *Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp *作 者:郭永恒 *完成日期:2016年6月1日 *版 本 号:v1.0 * *问题描述:设计一个排序函数模板,从小到大排序 */ #include <iostream> using namespace std; template <typename T,typename S> void swap(T array[], S a,S b) { T temp = array[a]; array[a] = array[b]; array[b] = temp; } template <typename T,typename S> void siftdown(T array[], S size, S i) { S t,flag = 0; while(2*i <= size && flag == 0) { if(array[i] < array[2*i]) t = 2*i; else t = i; if(2*i+1 <= size) if(array[t] < array[2*i+1]) t = 2*i+1; if(t != i) { swap(array,t,i); i = t; } else flag = 1; } } template <typename T,typename S> void Sort(T array[], S size) { S i,tsize = size/2; for(i = tsize; i > 0; --i) siftdown(array,size,i); while(size > 1) { swap(array,1,size); size--; siftdown(array,size,1); } } int main() { int n,i; double array[20]; cin >> n; //要从下标为1的位置开始输入才可以成功排序 for(i = 1; i <= n; ++i) cin >> array[i]; Sort(array,n); for(i = 1; i <= n; ++i) cout << array[i] << " "; return 0; }
运行结果:
相关文章推荐
- 俞敏洪老师的话
- tomcat 中文问题
- 关于导很多jar包和类库之后出现的问题
- bupt 84 Single Number(水题)
- sdut 3100
- onresize的定义方式
- leetcode #77 in cpp
- 删除Xcode中多余的证书provisioning profile
- linux下文件描述符的介绍
- Canvas之画布操作
- linux 代码编程风格
- SQL Server 内存和换页(Paging)
- swift学习之路(七)可选
- ResponseStatusExceptionResolver和ResponseStatus注解的使用
- Linux命令学习之ls命令
- UVALive 7045 Last Defence(找规律)
- 派生类的构造和析构函数
- 关于基类和派生类的动态绑定问题
- 【Ubuntu】安装Java和Eclipse
- 高斯消元法求解异或方程组: cojs.tk 539.//BZOJ 1770 牛棚的灯