Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Шпоры по МПиПА / Массивы / Сортировка / Пирамидальная сортировка / C / Исходник / heapsort
.cpp#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();
}