由于不经常使用,之前学习看过的算法都给忘了。现在把他们写下来,记录下来,以方便以后查阅。本篇文章的代码即为堆排序的代码。
堆排序代码
主函数中是对输入文件中的序列进行排序,并将结果输出到一个文件中。这是一种形式类似于google codejam的测试方法。
#include <iostream>
#include <fstream>
using namespace std;
void aprint(int *arr,int length)
{
for(int i=0;i<length;i++)
{
cout<<arr[i]<<',';
}
cout<<endl;
}
int left_child(int parent)
{
return parent*2+1;
}
int right_child(int parent)
{
return parent*2+2;
}
void heap_adjust(int *arr,int cur,int length)
{
for(int i=cur;i<cur+length;)
{
int left=left_child(i);
int right=right_child(i);
int bigger_child=left;
if (left>=cur+length) return;
if(left<cur+length-1 && arr[left]<arr[right])
{
bigger_child=right;
}
if(arr[bigger_chil