Пиpамидaльная copтировкa

Ответить
nastya_kk
Сообщения: 4
Зарегистрирован: 21 мар 2009, 16:05

Код: Выделить всё

#include "iostream"
#include "stdio.h"
using namespace std;

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 sort=0;
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 );
    }
    cout<<"\nf: "<<sort;
}

void main(){
int i, size;
int *array;
   cout << "Kolivhestvo elementov: \n ";
   cin >> size;
array = new int[size];
cout << "Ishodnii massiv:  "<<endl;
for ( i = 0; i < size; i ++ ){
array[i] = rand()%10000;
cout << array[i] << " ";
}

heapsort( array, size );
cout << "\nSortirovannii: ";
for ( i = 0; i < size; i ++ ){
cout << array[i] << " " ;
} 
   cin.get();
} 

помогите разобраться с кодом? принцип, как работает я знаю
вот мои догадки

void sift - функция по выстраиванию дерева
void heapsort - сама сортировка
L = size/2; - последовательность делим попалам
R = size - 1; - последние элементы последовательности справа. типа хвост?
while ( L > 0 ) а оно когда будет меньше нуля?
все что дальше пошло ничего не понимаю !!!((((
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

&quot писал(а):принцип, как работает я знаю
А вопрос тогда в чём?
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
nastya_kk
Сообщения: 4
Зарегистрирован: 21 мар 2009, 16:05

что обе функции делаюи и ак они работают?
--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
и самое главное - это подсчитать количество сравнений и перестановок
--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
и самое главное - это подсчитать количество сравнений и перестановок
Ответить