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

    #include <stdio.h>
    #include <stdlib.h>
    
    //int a[]={1000,10000,9,10,30,999999,50,23,90,100,10};
    int a[]={10,9,8,7,6,5};
    
    int length=sizeof(a)/sizeof(int);
    
    int swap(int start, int stop){
    	int temp;
    	temp=a[start];
    	a[start]=a[stop];
    	a[stop]=temp;
    	return 0;	
    }
    
    
    int buildsubheap( int k , int length1 ){
    	
    	int biggerpos;	
    	if( (2*k+1) > (length1 -1) ){
    		return 0;
    	}
    	biggerpos=2*k+1;
    	if((2*k+2)<=(length1-1)){
    		biggerpos=a[2*k+2]>a[2*k+1]?(2*k+2):(2*k+1);
    	}
    
    	if(a[biggerpos] >a[k]){
    		swap(biggerpos,k);
    	}
    	buildsubheap(biggerpos , length1);
    
    }
    
    int buildbottomtotop(){
    	
    	int k=length-1;
    	int biggerpos;
    	int i;
    	int outer=k;
    
    	if(length <=1){
    		return 0;
    	}
    
    	
    		while (k>0){
    			printf("
     k=%d 
    ", k);
    			biggerpos=k;
    			if( (k%2)==0 ){
    				biggerpos=a[k]>a[k-1]?k:(k-1);
    			}
    
    			if( a[biggerpos] > a[(k-1)/2] ) {
    				swap( biggerpos,((k-1)/2) );
    				buildsubheap(biggerpos, length);
    			}		
    			k--;
    		}
    		for(i=0;i<=length-1;i++){
    			printf("%d,", a[i]);
    		}
    		printf("
     outer=%d 
    ", outer);
    		while( outer >0 ){
    			swap(outer, 0);
    			buildsubheap(0 , outer);
    			outer--;
    		}
    	}	
    		
    
    
    
    
    
    
    
    int main(){
    	
    	printf("length= %d
    ",length);	
    	int i;
    	printf("
    ");
    	//quicksort(0,length-1);
    	buildbottomtotop();
    	printf("
    
    
    ");
    	for(i=0;i<length;i++){
    		printf("%d
    " , a[i]);
    	}
    	printf("
    ");
    	
    	return 0;
    }		
    

    自己实现的堆排序就是好  

    MySQL限时解答,24小时内友哥专业解答
    http://www.yougemysqldba.com
    如有进一步需要请联系微信onesoft007
    微博账号@友哥一指
  • 相关阅读:
    溢出省略号
    自定义字体
    jquery实现上一页下一页
    集成学习理解
    常用命令-python篇
    python 多进程和多线程
    10预处理命令上
    9函数
    8指针2
    7指针1
  • 原文地址:https://www.cnblogs.com/youge-OneSQL/p/6298762.html
Copyright © 2011-2022 走看看