数据结构-排序-堆排序(c++实现)

 #include<iostream>
using namespace std;

void HeapJudge(int tree[], int s, int m) {   //最小堆
	int j;
	int tmp = tree[s];
	for ( j = 2 * s; j <= m; j = j * 2) {
		if (j < m && tree[j] > tree[j + 1])
			j++;
		if (tmp < tree[j])
			break;
		tree[s] = tree[j];
		s = j;
	}
	tree[s] = tmp;
}
void HeapSort(int tree[],int len) {
	for (int i = len / 2; i >= 1; i--) {   //建堆
		HeapJudge(tree, i, len);
	}
	for (int j = len; j > 1; j--) {
		int tmp;
		tmp = tree[1];
		tree[1] = tree[j];
		tree[j] = tmp;
		HeapJudge(tree, 1, j - 1);
	}
}
 
 
int main() {
	int tree[] = { 4,4,10,3,5,1,2 };
	int len = 6;
	HeapSort(tree, len);
	for (int i = 1; i <=len; i++)
		cout << tree[i] << ' ';

}

猜你喜欢

转载自blog.csdn.net/qq_43710881/article/details/105894857
今日推荐