堆排序C语言版本的

// 2016_2_25_heap.cpp : Defines the entry point for the console application.//
#include "stdafx.h"
//调整树堆,使最大值放在根节点//i是数组元素位置,也是树的//长度void HeapAdjust(int array[],int i,int nLength)//这个只做一次{	int nChild;//这个是i对应的子节点	int nTemp;	for(;2*i+1<nLength;i=nChild)	{		//左子节点的位置=2*(父节点的位置)+1		//根节点的位置为0		//右子节点的位置=2*(父节点的位置)+2		nChild=2*i+1;		//得到子节点中较大的结点		if(nChild<nLength-1 && array[nChild+1]>array[nChild])++nChild;
		//如果较大子节点大于父节点,那么该节点与父节点替换		if(array[i]<array[nChild])		{			nTemp=array[i];			array[i]=array[nChild];			array[nChild]=nTemp;		}		else			break;
	}}
void HeapSort(int array[],int length){	int i;

	for(i=length/2-1;i>=0;--i)//length/2-1这个是得到非叶结点的序号	{		HeapAdjust(array,i,length);//调成最大堆	}
	for(i=length-1;i>0;--i)	{		array[i]=array[0]^array[i];//^异或,所有的数字和0异或,值不变		array[0]=array[0]^array[i];		array[i]=array[0]^array[i];
		//交换完值之后,调整  使用这种方法调整,必须首先要变成最大堆		HeapAdjust(array,0,i);	}
}
int main(int argc, char* argv[]){	printf("Hello World!\n");
	int i;	int num[]={9,8,7,6,5,4,3,2,1,0};//这个声明已经是最大堆了	HeapSort(num,sizeof(num)/sizeof(num[0]));
	for(i=0;i<sizeof(num)/sizeof(int);i++)	{		printf("%d ",num[i]);
	}	printf("\n ok \n");
	return 0;}
 
时间: 2024-08-01 19:16:33

堆排序C语言版本的的相关文章

VC2008以资源形式实现多语言版本[转]

转自:http://blog.csdn.net/akof1314/article/details/6321628 越来越多的程序支持多语言切换,或者能自动适应当前系统语言,让自己开发的程序支持多语言不仅可以让自己的程序被国人使用,也能让外国程序爱好者使用.VC开发多语言程序有多种方法,或读取配置文件,或使用不同资源DLL等等.这里介绍以资源形式实现多语言版本. 1.打开Visual Studio 2008,新建一个基于对话框工程,名称为LanguageTest,不使用Unicode库 ,资源语言

Excel格式导入导出数据(单语言版本)

Excel格式导入导出数据(单语言版本) 可以使用常用的excel格式导入导出相关数据,包含: 1. 商品分类: 2. 筛选组: 3. 筛选: 4. 商品资料: 5. 商品附加图片资料,(不包含图片本身的上传或抓取): 6. 商品选项: 7. 商品属性: 8. 产品特价数据: 9. 商品折扣数据: 10. 商品奖励积分数据: 特色: 1. 常用excel软件编辑商品数据后导入: 2. 导出的文件名称包含日期和时间,便于备份存档: 3. 由于涉及到服务器的内存,以及数据的多寡,可以将数据按照商品I

MFCC特征提取(C语言版本)

音频分析中,MFCC参数是经典参数之一.之前对于它的计算流程和原理,大体上是比较清楚的,所以仿真的时候,都是直接调用matlab的voicebox工具或者开发的时候直接调用第三方库.最近想整理一个纯C语言版本的MFCC函数,发现第三方开源的一部分是C++的,有些纯C的开源代码是针对语音固定了某些参数,不太灵活.干脆自己动手写一下,发现matlab写习惯了,都弱化了写C的思维,磕磕碰碰弄了2天,初版总算是完成了. 计算的大体流程:预加重->分帧->加窗->FFT->能量->Me

多语言版本网站建设数据库设计和考虑的因素

由于现在网站上动态应用日益增多,相当多的网站还会使用文件或者数据库来存储应用信息,因此如果文件或者数据库中存储的内容与语言相关时,还需要特别注意.对于存储在数据库中信息,可以采取以下几种方式支持多语言: 1,在数据库级别支持多语言:为每种语言建立独立的数据库,不同语言的用户操作不同的数据库. 2,在表级别支持多语言:为每种语言建立独立的表,不同语言的用户操作不同的表,但是它们在同一个数据库中. 3,在字段级别支持多语言:在同一个表中为每种语言建立独立的字段,不同语言的用户操作不同的字段,它们在同

T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst、语言版本影响!

原文:T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst.语言版本影响! CSDN 的 Blog 太滥了!无时不刻地在坏! 开始抢救性搬家 ... ... 到这里重建家园 /* T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst.语言版本影响 都是从老文章里收集或提炼出来的! 提示: (@@Datefirst + datepart(weekday,@Date)) % 7 判

android 多语言版本开发

最近项目中用用到语言切换功能,第一想到的就是资源文件,没错. 在资源文件中新建一个文件夹values-en,en表示英语,有一些还细化到地区,如values-en-rUS 即美国地区的英语,r是必需的.在里面新建一个strings.xml,把默认values文件夹中的strings.xml中的内容Copy至values-en中的strings.xml,再把该文件夹中的中文内容转换为英文,例如<string name="set">设置</string>转换为<

iOS-多语言版本的开发(一)(转载)

引言 ?多语言 & 本地化,随你怎么叫,道理差不多:一个App 要想走出国门,只支持一种语言是不能够的,也是不可能的,多元化世界已经融入我们的生活,对于一些应用,开发多语言版本,已经是不可避免的,特别是旅游等方面的应用:国内也有很多App 已经接入多语言,例如:支付宝.微信.收留我(嘻嘻,做下广告)等: 开发多语言,一般有两种情况 1.App还没有开始写,这个时候创建一个多语言版本,很是容易,然后再写代码的时候稍微留意下哪里需要保持多语言就行了:2.App已经上线了,而且之前没有任何的为开发多语

ios-多语言版本开发(三)(转载)

写在前面 ?iOS 多语言版本的开发(二)中我们实现了如何让用户自己去切换系统语言的功能,我们还写了Demo 以供辅助学习:但是,继以上两篇文章都是建立在项目刚刚启动或启动不久,项目中存在的中文字符串还不是很多,手动改起来也还可以接受; 那么问题来了,如果项目已经竣工或者已经迭代几个版本了,那该如何实现了?手动改起来也不太现实,耗时耗力不讨好的手动,在这里就不用考虑了. 不让考虑,是因为我有更简单快捷高效的方法,让我慢慢与您道来: 如何辨别项目中的中文字符串? ?既然要替换项目中使用到的中文字符

VC2008以资源形式实现多语言版本(非Unicode) .转

http://blog.csdn.net/jiht594/article/details/7043520对比,本文使用了SetThreadLocale. 越来越多的程序支持多语言切换,或者能自动适应当前系统语言,让自己开发的程序支持多语言不仅可以让自己的程序被国人使用,也能让外国程序爱好者使用.VC开发多语言程序有多种方法,或读取配置文件,或使用不同资源DLL等等.这里介绍以资源形式实现多语言版本. 1.打开Visual Studio 2008,新建一个基于对话框工程,名称为LanguageTe