예제 #1
0
void MinheapSortToDescArray(int a[], int n){
	for (int i = n - 1; i >= 1; i--)
	{
		Swap(a[i], a[0]);
		MinHeapFixdown(a, 0, i);
	}
}
예제 #2
0
void MinheapsortTodescendarry(int *a, int n)
{
	for (i = n - 1; i >= 1; i--) {
		Swap(a[i], a[0]);
		MinHeapFixdown(a, 0, 1);
	}
}
예제 #3
0
int minHeap(int a[], unsigned int size)
{
	int i = 0;
	for(i = (size -1)/2; i >= 0; i--)
		MinHeapFixdown(a, i, size);
	return 0;
}
예제 #4
0
void MakeMinHeap(int *a, int n)
{
	int i = 0;

	for (i = n / 2 - 1; i >= 0; i--) {
		MinHeapFixdown(a, i, n);
	}
}
예제 #5
0
void MinHeapDeleteNumber(int *a, int n)
{
	int tmp;
	a[0] = tmp;
	a[0] = a[n - 1];
	
	a[n - 1] = tmp;

	MinHeapFixdown(a, 0, n - 1);
}
예제 #6
0
int heapSort(int a[], unsigned int size)
{
	int i =0;
	minHeap(a, size);
	
	printArray(a, size, "MinHeap: ");
	
	for(i = size -1; i > 0; i--)
	{
		swap(&a[i], &a[0]);
		MinHeapFixdown(a, 0, i-1);
		printArray(a, i, "heapSort ");
	}
	return 0;
}
예제 #7
0
//建立最小堆
void MakeMinHeap(int a[], int n){
	for (int i = n / 2 - 1; i >= 0; i--)
		MinHeapFixdown(a, i, n);
}
예제 #8
0
//在最小堆中删除数
void MinHeapDeleteNumber(int a[], int n){
	Swap(a[0], a[n - 1]);
	MinHeapFixdown(a, 0, n - 1);
}