堆排序:
// HeapSort.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <vector>
#include <algorithm>
using namespace std;
void HeapAdjust(vector<int> &arr, int s, int m)
{
int tmp = arr[s], j;
for (j = 2*s; j <= m; j*=2)
{
if (j < m && arr[j] <= arr[j + 1])
{
j++;
}
if (tmp >= arr[j])
{
break;
}
arr[s] = arr[j];
s = j;
}
arr[s] = tmp;
}
void HeapSort(vector<int> &arr)
{
int i;
for (i = arr.size() / 2; i >= 0; i--)
{
HeapAdjust(arr, i, arr.size() - 1);
}
for (i = arr.size() - 1; i >= 1; i--)
{
int t = arr[0];
arr[0] = arr[i];
arr[i] = t;
HeapAdjust(arr, 0, i - 1);
}
}
int main()
{
int a[] = {5, 2, 10, 1, 4, 3, 8, 0, 6};
vector<int> arr(a, a+8);
HeapSort(arr);
return 0;
}