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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать массив от -100 до 100 http://www.cyberforum.ru/cpp-beginners/thread18788.html
Привет всем, мне нужно просто на просто создать массив от -100 до 100 :)
C++ Предел int Есть такая игра, Lineage II. Так вот там если покупать или продавать, что либо, то оно не должно превышать число 2147483648. У меня задача немного иная, нужно при сложении выдавать ошибку если число больше 2147483648 (9999999999999999999999999999999999999999999999999999999999999999999) и выдавать ошибку если я задал в cin равным или больше 2147483648. Возник вопрос, как написать такой... http://www.cyberforum.ru/cpp-beginners/thread18785.html
Найти в строке два одинаковых фрагмента (не включая пробелы) длиной более 5 символов C++
Привет всем вопрос состоит:Найти в строке два одинаковых фрагмента (не включая пробелы) длиной более 5 символов. Что то не могу сообразить ни как может вы сможите.
номер первого элемента и последнего максимальной последовательности одинаковых элементов в массиве. C++
#include <iomanip.h> #include <fstream.h> #include <conio.h> const int N=499; int m,i; void InpF(char *NameF, int *x) { m=0; ifstream finput; finput.open(NameF);
C++ Missing a string http://www.cyberforum.ru/cpp-beginners/thread18759.html
Есть функции seekp А есть функция пропуска не по позициям , а по строчно в файле. НЕ использовать outside.get(j); равен j '\n' или нет.:help:
C++ Двумерные массивы Уважаемые пользователи форума помогите плиз с задачкой.Сессия на носу, все сделал а с этим никак не разберусь:'( Задание. Необходимо преобразовать массив в соответствии с вариантом. Начальное состояние матрицы задается константой (в некоторых вариантах возможно дополнительный способ задания массива случайным образом). Пример двумерного массива 3x2: const int a = {{1,2}, {3,4}, {5,6}};... подробнее

Показать сообщение отдельно
mik-a-el
CyberForum Owner
57302 / 37050 / 231
Регистрация: 10.04.2006
Сообщений: 12,670
17.12.2008, 23:07     Алгоритм Хоара
Она же быстрая сортировка.
Раз:
Код
//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)
{
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru