zoukankan      html  css  js  c++  java
  • 排序——堆排序

      以下是自己写的堆排序源码,已经测试通过,以后有时间总结,

    #include<stdio.h>
    //堆a,存储在数组a[len]中,根节点下标为i,len为数组长度 
    //该函数的作用是保持最大堆的性质 
    void Keep(int *a,int len,int i);
    void Build(int* a,int len);
    void Sort(int* a,int len);
    void Keep(int *a,int len,int i)
    {
    	int left=2*i+1;
    	int right=2*i+2;
    	int largest=i,temp;
    	if(left<len&&a[left]>a[i])
    		largest=left;
    	if(right<len&&a[right]>a[largest])
    		largest=right;
    	if(largest!=i)
    		{
    			temp=a[i];
    			a[i]=a[largest];
    			a[largest]=temp;
    			Keep(a,len,largest);
    	}
    } 
    //建堆:通过一个数组建立最大堆
    void Build(int* a,int len)
    {
    	int i;
    	for(i=len/2-1;i>=0;i--)
    		Keep(a,len,i);
    }
    //堆排序
    void Sort(int* a,int len)
    {
    	int temp,i;
    	Build(a,len);
    	for(i=len-1;i>=1;i--)
    	{
    		temp=a[i];
    		a[i]=a[0];
    		a[0]=temp;
    		printf("%d %d	",a[0],a[i]);
    		len--;
    		Keep(a,len,0);	
    			
    			
    	}	
    	printf("
    ");
    }
    int main()
    {
    	int len=10;
    	int a[len];
    	for(int i=0;i<len;i++)
    		scanf("%d",&a[i]);
    	Build(a,len);
    	Sort(a,len);
    	for(int i=0;i<len;i++)
    		printf("%d ",a[i]);
    	
    	
    	
    return 0;	
    }
    

      

    亲爱的听众朋友我是你的代班DJ
  • 相关阅读:
    IE9的css hack
    ie6 插入图片img png24 阴影
    clear:both; overflow:hidden
    ie6 背景图片 png24 阴影
    html 页面定位
    IE无法显示PNG
    行内元素 & 块元素
    div+css布局时的浏览器兼容问题
    删除源代码的管理信息(VSS)
    string path;
  • 原文地址:https://www.cnblogs.com/YTYMblog/p/5390760.html
Copyright © 2011-2022 走看看