堆排序代码

本文提供了一种简洁的堆排序算法实现方案,适用于IT公司的笔试和面试。通过一系列精简的操作,如交换元素、堆调整等步骤,实现了高效的数据排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

堆排序代码,比较喜欢简洁的代码,发现网上找到的堆排序代码太冗长了,现在整理一下,适合IT公司笔试面试用。
<pre name="code" class="cpp">void swap(int& a, int& b){
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
}
void HeapAdjust(int arr[],int root, int size){   
    while(2 * root + 1 < size){   
        int lchild = 2 * root + 1;   
        if( lchild + 1 < size )
			lchild = arr[ lchild ] > arr[ lchild + 1 ] ? lchild : lchild + 1;              
        if( arr[root] < arr[lchild]){                 
			swap( arr[root], arr[lchild]);
            root = lchild;
        }else
			break;
    }   
}      
void HeapSortData(int arr[], int size){   
    //将Hr[0,Lenght-1]建成大根堆   
    for (int i = size / 2 - 1; i>=0; i--){
        HeapAdjust(arr, i, size);   
    }     
    for (int i = size - 1; i>0; i--){      
        swap( arr[0], arr[i]);   
        //将H.r[0..i]重新调整为大根堆   
        HeapAdjust(arr, 0, i);   
    }   
}     




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值