0

الگوریتم مرتب سازی Heap Sort

 
rezahashemian1374
rezahashemian1374
کاربر برنزی
تاریخ عضویت : مهر 1391 
تعداد پست ها : 254
محل سکونت : تهران

الگوریتم مرتب سازی Heap Sort

الگوریتم مرتب سازی Heap Sort

 

 

 

#include <iostream.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
void heapSort(int numbers[], int array_size);
void siftDown(int numbers[], int root, int bottom);
void main (void)
{
    const n = 10;
    int X[n];

    randomize();
    for (int i=0; i<n; i++)
    {
        X[i] = rand() % 100;
        cout << X[i] << "\t";
    }

    heapSort (X,n);

    cout<< endl;
    for (int i=0; i<n; i++)
        cout << X[i] << "\t";

    getch();
}
void heapSort(int numbers[], int array_size)
{
  int i, temp;

  for (i = (array_size / 2)-1; i >= 0; i--)
    siftDown(numbers, i, array_size);

  for (i = array_size-1; i >= 1; i--)
  {
    temp = numbers[0];
    numbers[0] = numbers[i];
    numbers[i] = temp;
    siftDown(numbers, 0, i-1);
  }
}


void siftDown(int numbers[], int root, int bottom)
{
  int done, maxChild, temp;

  done = 0;
  while ((root*2 <= bottom) && (!done))
  {
    if (root*2 == bottom)
      maxChild = root * 2;
    else if (numbers[root * 2] > numbers[root * 2 + 1])
      maxChild = root * 2;
    else
      maxChild = root * 2 + 1;

    if (numbers[root] < numbers[maxChild])
    {
      temp = numbers[root];
      numbers[root] = numbers[maxChild];
      numbers[maxChild] = temp;
      root = maxChild;
    }
    else
      done = 1;
  }
}

Seyyed.Reza.Hashemian@Gmail.Com

دوستانی که سوالی دارند یا مایل به تماس هستند می توانند از اطلاعات بالا استفاده نمایند.

اگر هم تایپکی زدید و احتیاج به پاسخگویی سریع داشتید اطلاع دهید

پنج شنبه 19 اردیبهشت 1392  1:09 PM
تشکرات از این پست
دسترسی سریع به انجمن ها