Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
#1

Быстрая сортировка - C++

23.10.2011, 20:40. Просмотров 554. Ответов 2
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void quickSortR(int *first,int *last) {
// На входе - массив a[], a[N] - его последний элемент.
 
  int *i = first, *j = last;            // поставить указатели на исходные места
  int m;
 
  m=(first+last)/2;                // центральный элемент
 
  // процедура разделения
  do {
    while ( *(first+i) < m ) i++;
    while ( *(last+j) > m ) j--;
 
    if (i <= j) {
     int temp = *(first+i); *(first+i) = *(last+j); *(last+j) = temp;
      i++; j--;
    }
  } while ( i<=j );
 
  // рекурсивные вызовы, если есть, что сортировать 
  if ( j > first ) quickSortR(first, j);
  if ( last > i ) quickSortR(first+i, last-i);
 
 
int _tmain(int argc, _TCHAR* argv[])
{   int a[20];
    for (int i=0; i<20; i++)
        a[i]=i;
    random_shuffle(a,a+20);
    for (int i=0; i<20; i++)
        cout << a[i] <<' ';
    cout << endl;
    quickSortR(a,19);
 
    for (int i=0; i<20; i++)
        cout << a[i] <<' ';
    cout << endl;
    return 0;
}
Найдя в FAQ'е сортировку Хоара и введя некоторые изменения, возник вопрос:
как сложить два указателя? например что бы получить центральный элемент
буду очень признателен, если кто-нибудь объяснит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2011, 20:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Быстрая сортировка (C++):

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива - C++
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным элементом. Немогу понять как устоновить...

Быстрая сортировка (сортировка Хоара) для связных списков - C++
есть у кого готовый алгоритм? или подскажите как реализовать

C/C++ FAQ :: Быстрая сортировка (сортировка Хоара) - C++
Вопрос, скорее академический, по мотивам реализации. Вот в faq приведена реализация этого метода сортировки на C++. В коде есть следующий...

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

Сортировка Хоара / Быстрая сортировка - C++
Доброго времени суток. Написал реализацию алгоритма быстрой сортировки. void SortHhoar(int *arr,int f,int l)//Хоара { int mid = (f...

Сортировка расчёской и быстрая сортировка - C++
В файле in.txt записана последовательность целых чисел. Заданными методами отсортировать числа и записать в файлы out1.txt и out2.txt....

2
gooseim
Эксперт С++
509 / 413 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
23.10.2011, 22:22 #2
C++
1
 m=*(first+(last-first)/2);
1
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
23.10.2011, 22:57  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void quickSortR(int *first,int *last) {
// На входе - массив a[], a[N] - его последний элемент.
 
  int *i = first, *j = last;            // поставить указатели на исходные места
  int m;
 
  m=*(first+(last-first)/2);                // центральный элемент
 
  // процедура разделения
  do {
    while ( *first < m ) first++;
    while ( *last > m ) last--;
 
    if (i <= j) {
     int temp = *first; *first = *last; *last = temp;
      first++; last--;
    }
  } while ( first<=last );
 
  // рекурсивные вызовы, если есть, что сортировать 
  if ( last > i ) quickSortR(i, last);
  if ( j > first ) quickSortR(first,j);
 
}
будьте добры, проверьте на правильность
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2011, 22:57
Привет! Вот еще темы с ответами:

Быстрая сортировка - C++
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; using namespace std; int comp(const int...

Быстрая сортировка - C++
Здравствуйте уважаемые форумчане киберфорума. Имеется проблеммка с задачкой, могли бы вы помочь мне ее решить? Имеем двумерный...

Быстрая сортировка - C++
Каждому элементу массива а соответствует значение массива b то есть a b 1-5 2-3 5-2 3-1 4-4 если сортировать массив b по...

Быстрая сортировка - C++
Помогите пожалуйста, при использовании алгоритма быстрой сортировки, конечный массив получается не отсортированным, хотя все операции...


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

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

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