Sunday, March 27, 2016

კონებით დალაგება (heap sort) C++

#include "stdafx.h"
#include <iostream>
using namespace std;

#define N 8

int _tmain(int argc, _TCHAR* argv[])
{
int i, j, k;
int a[N + 1] = { 0, 5, 2, 3, 9, 8, 7, 1, 4 };
int b;
for (i = 2; i <= N; i++)
{
j = i >> 1; 
k = 1;
while (j > 0 && a[k] > a[j])
{
b = a[k];
a[k] = a[j];
a[j] = b;
k = j;
j = j >> 1;
}
}
for (int i = 1; i < N; i++)
cout << a[i] << endl;


for (i = N; i>1; i--)
{
b = a[i];
a[i] = a[1];
a[1] = b;
j = 1;
k = j << 1;
while (k < i)
{

if (k=1 < 1 && a[k + 1] > a[k])
k = k + 1;
if (a[k] > a[j])
{
b = a[k];
a[k] = a[j];
a[j] = b;
j = k;
k = k << 1;
}
else 
break;
}
}

for (int i = 1; i < N; i++)
cout << a[i] << endl;

system("pause");
return 0;
}

No comments:

Post a Comment