Скачиваний:
36
Добавлен:
02.05.2014
Размер:
1.23 Кб
Скачать
#include "iostream.h"
#include "stdio.h"

void sift( int *array, int L, int R ){
int i, j;
int item;
     i = L;
     j = 2*L;
     item = array[L];
     if ( j < R && array[j] < array[j + 1] ) j++;
     while ( j <= R && item < array[j] ){
           array[i] = array[j];
           i = j;
           j = 2*j;
           if ( j < R && array[j] < array[j + 1] ) j++;
     }
     array[i] = item;
}

void heapsort( int *array, int size ){
int L, R;
int item;
     L = size/2;
     R = size - 1 ;
     while ( L > 0 ){ 
           L--;
           sift( array, L, R );
     }
     while ( R > 0 ){ 
           item = array[0];
           array[0] = array[R];
           array[R] = item;
           R--;
           sift( array, L, R );
     }
}

void main(){
	int i, size;
	int *array;
    cout << "Heapsort.\nEnter array dimension: ";
    cin >> size;
	array = new int[size];
    cout << "Enter " << size << " elements: ";
	for ( i = 0; i < size; i ++ ){
		cin >> array[i];
	}

	heapsort( array, size );

	cout << "Your array after sorting: ";
	for ( i = 0; i < size; i ++ ){
		cout << array[i] << " ";
	} 
    cout << "\nPress \"Enter\" to continue..." << endl; 
    getchar();
}