Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.72
Григорий A
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 5
#1

Алгоритм Хоара - C++

17.12.2008, 22:16. Просмотров 3149. Ответов 1
Метки нет (Все метки)

Помогите пожалуйста..
если задачка -

Запрограмировать алгоритм Хоара сортировки одномерного массива действительных чисел.Подсчитать кол-во сравнений и перестановок элементов. Провести эксперимент с несколькими(порядка неск. десятков) массивами случайных чисел и выдать статистику л кл-ве сравнений и перестановок в каждом случае...

буду оч. признателен если кто-то чем-то поможет...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2008, 22:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Алгоритм Хоара (C++):

Алгоритм Хоара( код с алгоритмом) - C++
Дана задачка.. Запрограммировать алгоритм Хоара сортировки одномерного массива действительных чисел.Подсчитать кол-во сравнений и...

Сортировка Хоара - C++
помогите правильно вставить счетчик шагов. Насколько я понял, функция сама себя перезапускает, тоесть надо в тело функции кидать, но так...

сортировка хоара - C++
void QuickSort(int* const a, int low, int N) { int i = low, j = N; int temp, p; p = a; do { ...

Сортировка методом Хоара - C++
Дали задание 1. Пусть дано массив a1, a2, ..., an. Необходимо переставить его элементы так, чтобы сначала шла группа элементов, больших...

Быстрая сортировка Хоара - C++
Быстрая сортировка Хоара (QSort) разбивает массив в ходе сортировки до тех пор, пока размер частичного подмассива не станет равен...

Сортировка методом Хоара - C++
Здраствуйте помогите пожалуйста с программой не могу запрограммировать сортировку методом Хоара, мне задано зделать 3 сортировки (выбором,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
mik-a-el
CyberForum Owner
57367 / 37115 / 231
Регистрация: 10.04.2006
Сообщений: 12,684
17.12.2008, 23:07 #2
Она же быстрая сортировка.
Раз:
Код
//Quick Sort Functions for Descending Order
// (2 Functions)
void quicksort(apvector <int> &array, int top, int bottom)
{
      // top = subscript of beginning of vector being considered
      // bottom = subscript of end of vector being considered
      // this process uses recursion - the process of calling itself
     int middle;
     if (top < bottom)
    {
          middle = partition(array, top, bottom);
          quicksort(array, top, middle);   // sort top partition
          quicksort(array, middle+1, bottom);    // sort bottom partition
     }
     return;
}


//Function to determine the partitions
// partitions the array and returns the middle index (subscript)
int partition(apvector <int> &array, int top, int bottom)
{
     int x = array[top];
     int i = top - 1;
     int j = bottom + 1;
     int temp;
     do
     {
           do     
           {
                  j - -;
           }while (x >array[j]);

          do  
         {
                 i++;
          } while (x <array[i]);

          if (i < j)
         { 
                 temp = array[i];    // switch elements at positions i and j
                 array[i] = array[j];
                 array[j] = temp;
         }
     }while (i < j);    
     return j;           // returns middle index
}
Два:
Код
#include<process.h>
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>

int Partition(int low,int high,int arr[]);
void Quick_sort(int low,int high,int arr[]);

void main()
{
int *a,n,low,high,i;
clrscr();
cout<<"/**************************Quick Sort Algorithm
Implementation*****************/

";
cout<<"Enter number of elements:
";
cin>>n;

a=new int[n];
/* cout<<"enter the elements:
";
for(i=0;i<n;i++)
cin>>a;*/
for(i=0;i<n;i++)
a[i]=rand()%100;
clrscr();
cout<<"
Initial Order of elements
";
 for(i=0;i<n;i++)
  cout<<a[i]<<"	";
  cout<<"
";

high=n-1;
low=0;
Quick_sort(low,high,a);
cout<<"
Final Array After Sorting:
";

  for(i=0;i<n;i++)
  cout<<a[i]<<"	";

getch();
}

/*Function for partitioning the array*/

int Partition(int low,int high,int arr[])
{ int i,high_vac,low_vac,pivot/*,itr*/;
   pivot=arr[low];
   while(high>low)
{ high_vac=arr[high];

  while(pivot<high_vac)
  {
    if(high<=low) break;
    high--;
    high_vac=arr[high];
  }

  arr[low]=high_vac;
  low_vac=arr[low];
  while(pivot>low_vac)
  {
    if(high<=low) break;
    low++;
    low_vac=arr[low];
  }
  arr[high]=low_vac;
}
  arr[low]=pivot;
   return low;
}

void Quick_sort(int low,int high,int arr[])
{
  int Piv_index,i;
  if(low<high)
  {
   Piv_index=Partition(low,high,arr);
   Quick_sort(low,Piv_index-1,arr);
   Quick_sort(Piv_index+1,high,arr);
  }
}
Три:
Код
#include "QuickSort.h"  

QuickSort::QuickSort(int n, int* x) : Sort(n, x) { 
this->algName = "Quick Sort [Center]"; 
} 

void QuickSort::Run(void) 
{ 
this->Launch(this->x, this->n); 
}

void QuickSort::Launch(int* x, int size) { 
long i = 0, j = size; // начальные значения 
int temp, p;  

p = x[ size>>1 ]; // выбираем середину

// процедура разделения
do {
while (x[i] < p) i++;
while (x[j] > p) j--;

if (i <= j) {

temp = x[i]; x[i] = x[j]; x[j] = temp;
this->CountSwap();
i++; j--;
}
} while (i <= j);

// рекурсивные вызовы, если есть, что сортировать
if ( j > 0 ) this->Launch(x, j);
if ( size > i ) this->Launch(x+i, size-i);
}

QuickSort::~QuickSort(void)
{
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2008, 23:07
Привет! Вот еще темы с ответами:

Сортировка методом Хоара - C++
Ввести массив x1,x2,...,x20 в диапазоне . Требуется расположить отрицательные элементы в порядке убывания. Вывести массивы до и после...

Визуализатор по быстрой сортировке Хоара на С++ - C++
Всем доброго времени суток, я начинающий программист и на этом форуме не случайно. Конец семестра, а я до сих пор не знаю как реализовать...

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки ) - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void lab () { int s1 = 0; int s2 =...

Сравнение алгоритмов сортировки Хоара и std::sort - C++
Собственно в универе было дано задание, написать программу которая принимает на вход из файла в структуру имя - производитель-цена и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru