排序练习【sdut 1582】【堆排序】
排序
Time Limit: 1000ms Memory limit: 32678K 有疑问?点这里^_^
题目描述
给你N(N<=100)个数,请你按照从小到大的顺序输出。
输入
输入数据第一行是一个正整数N,第二行有N个整数。
输出
输出一行,从小到大输出这N个数,中间用空格隔开。
示例输入
- 5
- 1 4 3 2 5
示例输出
- 1 2 3 4 5
提示
本来这道题目用普通的选择排序或者是冒泡排序都可以ac,但是为了练一练堆排序,用堆排序的方法做了一下,权且当做抛砖引玉~
代码:
- //堆排序
- #include<iostream>
- #include<string>
- #include<string.h>
- #include<stdlib.h>
- #include<algorithm>
- using namespace std;
- void heapsort(int f[],int );
- void heapadjust(int f[],int s,int m);
- int main()
- {
- int n;
- cin>>n;
- int i;
- int f[];
- for(i=;i<=n;i++)
- cin>>f[i];
- heapsort(f,n);
- for(i=;i<=n;i++)
- {
- if(i==)
- cout<<f[i];
- else
- cout<<" "<<f[i];
- }
- cout<<endl;
- return ;
- }
- void heapsort(int f[],int n)
- {
- int i;
- for(i=n/;i>;i--)
- {
- heapadjust(f,i,n);
- }
- for(i=n;i>;i--)
- {
- int temp;
- temp=f[];
- f[]=f[i];
- f[i]=temp;
- heapadjust(f,,i-);
- }
- }
- void heapadjust(int f[],int s,int m)
- {
- int rc=f[s];
- for(int j=*s;j<=m;j=j*)
- {
- if(j<m&&f[j]<f[j+])++j;
- if(rc>=f[j])break;
- f[s]=f[j];
- s=j;
- }
- f[s]=rc;
- }
排序练习【sdut 1582】【堆排序】的更多相关文章
- 算法 排序NB二人组 堆排序 归并排序
参考博客:基于python的七种经典排序算法 常用排序算法总结(一) 序前传 - 树与二叉树 树是一种很常见的非线性的数据结构,称为树形结构,简称树.所谓数据结构就是一组数据的集合连同它们的储 ...
- 插入排序、冒泡排序、选择排序、希尔排序、高速排序、归并排序、堆排序和LST基数排序——C++实现
首先是算法实现文件Sort.h.代码例如以下: <pre name="code" class="java">/* * 实现了八个经常使用的排序算法: ...
- 数据结构和算法(Golang实现)(24)排序算法-优先队列及堆排序
优先队列及堆排序 堆排序(Heap Sort)由威尔士-加拿大计算机科学家J. W. J. Williams在1964年发明,它利用了二叉堆(A binary heap)的性质实现了排序,并证明了二叉 ...
- 第四篇、C_快速、冒泡、选择、插入排序、二分查找排序、归并、堆排序
1.快速排序 实现: 1.取中间一个数作为支点 2.分别在支点的左右两边进行查找,如果左边查找到比支点大,右边查找到比支点小,就交换位置,如此循环,比支点小的数就排在了左边,比支点大的就排在右边 3. ...
- 排序算法入门之堆排序(Java实现)
堆排序 在学习了二叉堆(优先队列)以后,我们来看看堆排序.堆排序总的运行时间为O(NlonN). 堆的概念 堆是以数组作为存储结构. 可以看出,它们满足以下规律: 设当前元素在数组中以R[i]表示,那 ...
- 高速排序,归并排序,堆排序python实现
高速排序的时间复杂度最好情况下为O(n*logn),最坏情况下为O(n^2),平均情况下为O(n*logn),是不稳定的排序 归并排序的时间复杂度最好情况下为O(n*logn),最坏情况下为O(n*l ...
- java算法----排序----(7)堆排序
package log; import java.util.Arrays; public class Test4 { /** * 堆排序 * * @param args */ public stati ...
- 【Java】 大话数据结构(16) 排序算法(3) (堆排序)
本文根据<大话数据结构>一书,实现了Java版的堆排序. 更多:数据结构与算法合集 基本概念 堆排序种的堆指的是数据结构中的堆,而不是内存模型中的堆. 堆:可以看成一棵完全二叉树,每个结点 ...
- 几种排序方式的java实现(02:希尔排序,归并排序,堆排序)
代码(部分为别人代码): 1.希尔排序(ShellSort) /* * 希尔排序:先取一个小于n的整数d1作为第一个增量, * 把文件的全部记录分成(n除以d1)个组.所有距离为d1的倍数的记录放在同 ...
随机推荐
- JavaScript深入浅出2-表达式和运算符
慕课网教程视频地址:Javascript深入浅出 表达式是指能计算出值的任何可用程序单元 原始表达式:常量.直接量 3.14,“test” 关键字 null,this 变量 i,k,j 表达式含:原始 ...
- windows下的getopt/getoptlong函数
windows下的getopt/getoptlong函数 getopt/getopt_long函数是GNU C中的函数,在linux编程中很常用到.这里就不介绍了. windows下没有找到类似的函数 ...
- [转]Java连接各种数据库的方法
//MySQL: String Driver="com.mysql.jdbc.Driver"; //驱动程序 String URL="jdbc:m ...
- (转) C#如何使用异步编程
怎么使用异步,就是用委托进行处理,如果委托对象在调用列表中只有一个方法,它就可以异步执行这个方法.委托类有两个方法,叫做BeginInvoke和EndInvoke,它们是用来异步执行使用. 异步有三种 ...
- oracle数据库两表数据比较
本文转自http://blog.sina.com.cn/s/blog_3ff4e1ad0100tdl2.html 1 引言 在程序设计的过程中,往往会遇到两个记录集的比较.如华东电网PMS接口中实现传 ...
- MapReduce 程序运行报错 java.lang.ClassNotFoundException解决方法
在创建自定义的Mapper时候,编译正确,但上传到集群执行时出现错误: 11/16/05 22:53:16 INFO mapred.JobClient: Task Id : attempt_20111 ...
- 页面加载时执行JQ代码
$(function () { //jq加载时执行的这里面是 $("#ss").append("<strong>这是新加的</strong>&qu ...
- poj 1010
http://poj.org/problem?id=1010 题意:给你n种邮票的价值,到0结束,这些邮票价值有可能相同,但是形状是不同的. 还有给你m个收藏家所需要收藏的邮票的总价格.到0结束. 每 ...
- poj 1060
http://poj.org/problem?id=1060 题意:多项式的运算的题目,不过这个运算有个特点,就是只要是同项的多项式,无论相加还是相减,都为0,给你三个多项式,分别为a,b,c. 要你 ...
- Effective C++ -----条款21:必须返回对象时,别妄想返回其reference
绝不要返回pointer或reference指向一个local stack对象,或返回reference指向一个heap-allocated对象,或返回pointer或reference指向一个loc ...