【第22期】观点:IT 行业加班,到底有没有价值?

堆排序

原创 2015年11月18日 22:38:30

 

示意图如下:

                           

 

 

 

 

代码如下:

   

#include<iostream>
#include<iomanip>

using namespace std;

void keep_heap(int arr[], int i,int heap_size)
{
	int Left = i * 2;
	int Right = 2 * i +1 ;
	int largest=i;
	if (Left < heap_size && arr[Left] > arr[i])
	    largest = Left;
	else
		largest = i;
	if (Right < heap_size && arr[Right] > arr[largest])
		largest = Right;
	if (largest != i)
	{
		int t = arr[i];
		arr[i] = arr[largest];
		arr[largest] = t;
		keep_heap(arr, largest, heap_size);
	}
	
}


void build_heap(int arr[], int heap_size)
{

	for (int i = heap_size / 2 - 1; i >= 1; i--)
	{
		keep_heap(arr, i, heap_size);
	}


}

void heap_sort(int arr[], int n)
{
	int heap_size = n;
	build_heap(arr, heap_size);
	for (int i = n-1; i >= 1; i--)
	{
		int t = arr[1];
		arr[1] = arr[i];
		arr[i] = t;
		heap_size--;
		keep_heap(arr, 1, heap_size);
	}


}

void main()
{
	int arr[] = { 0, 9, 5, 7, 8, 6, 2, 4, 3, 1 };
	int length = sizeof(arr) / sizeof(int);
	for (int i = 1; i < length; i++)
		cout << arr[i] << " ";
	cout << endl;

	heap_sort(arr, length);
	for (int i = 1; i < length; i++)
		cout << arr[i] << " ";
	cout << endl;
	system("pause");
}


 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

堆排序

堆排序算法中一般使用二叉堆,最大堆中的子节点值小于父节点的值,因此最大堆的根节点值最大。通过不断的将根节点值移到堆的末尾,并且调整堆使其满足最大堆的特性,达到排序的目的。

(转)冒(冒泡)择(选择) 路(插入) 兮(希尔) 快(快速) 归(归并) 堆(堆排序)

/**(转) * 冒(冒泡)择(选择) 路(插入) 兮(希尔) 快(快速) 归(归并) 堆(堆排序) * @Class:Sort.java * @Description:冒(冒泡)择(选择) 路(插入) 兮(希尔) 快(快速) 归(归并) 堆(堆排序) */ public class Sort { // 待排数组 private static int[] input = new

白话经典算法系列之七 堆与堆排序

转自:http://blog.csdn.net/morewindows/article/details/6709644/  堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排...

《算法之美》---堆排序

堆可分为大根堆和小根堆;对小根堆来说,若在输出堆顶的最小值后,使得剩余的n-1个元素的序列重又建成一个小根堆,则得到n个元素中的次小值。如此反复执行,便能得到一个有序序列,这个过程称为堆排序。堆排序只需要一个用来记录大小的辅助空间,每个

堆与堆排序

转载:白话经典算法系列之七 堆与堆排序  堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)