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

Quicksort, отсортировать элементы массива, стоящие на четных позициях, чтобы они располагались по убыванию - C++

Восстановить пароль Регистрация
 
lesha 13
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 20
29.05.2014, 01:03     Quicksort, отсортировать элементы массива, стоящие на четных позициях, чтобы они располагались по убыванию #1
Имеется одномерный массив длиной N = 50. Отсортировать методом быстрой сортировки элементы массива, стоящие на четных позициях, так, чтобы они располагались по убыванию. Заполнение массива оператором случайных чисел Random.
Есть код, не могу понять в чем ошибка. Получается, что массив сортируется по частям, а не весь, как нужно. Исправьте, пожалуйста.
Код:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;
void quicksort(int *mas, int begin, int end) 
{
       int mid, a; 
       int f=begin, l=end;
       mid=mas[(f+l) / 2];
       do
       {
             while (mas[f]>mid) f++;
             if ((f+1)%2!=0)
                     f++;
             while (mas[l]<mid) l--;
             if ((l+1)%2!=0)l--;
             if (f<=l)
             {
                    a=mas[f];
                    mas[f]=mas[l];
                    mas[l]=a;
                    f++; 
                    l--;
             }
             else f++, l--;
       }
       while (f<l);
       if (begin<l) quicksort(mas, begin, l);
       if (f<end) quicksort(mas, f, end);
}
 void gener()
{
       int const n=50 ;
       int begin, end;
       int *Arr=new int[n];
       for (int i=0; i<n; i++)
       {
             Arr[i]=rand()%35;
             cout<<Arr[i]<<" ";
       }
       begin=0; end=n-1;
       quicksort(Arr, begin, end);
       cout<<endl;
       for (int i=0; i<n; i++)
             cout<<Arr[i]<<" ";
       delete []Arr;
}
 
void main() 
{
       gener();
       getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 01:03     Quicksort, отсортировать элементы массива, стоящие на четных позициях, чтобы они располагались по убыванию
Посмотрите здесь:

C++ Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных
Преобразовать массив таким образом, чтобы в его первой половине расположились элементы, стоящие в четных позициях C++
C++ Превратить массив так, чтобы в его первой половине располагались элементы стоящие в четных позициях а во второй половине - нечетные
Переделать массив таким образом, в первой половине располагались элементы, стоящие на четных позициях, а во второй половине - элементы в нечетных C++
Отсортировать методом быстрой сортировки элементы массива, стоящие на четных позициях C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
samPogosyan
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 21
29.05.2014, 01:27     Quicksort, отсортировать элементы массива, стоящие на четных позициях, чтобы они располагались по убыванию #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
       while(f<=l)
       {
             while (mas[f]<mid) f++;
             while (mas[l]>mid) l--;
             if (f<=l)
             {
                    a=mas[f];
                    mas[f]=mas[l];
                    mas[l]=a;
                    f++; 
                    l--;
             }
       }
      
       if (begin<l) 
       quicksort(mas, begin, l);
       if (f<end)
       quicksort(mas, f, end);
должно сработать
lesha 13
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 20
29.05.2014, 18:32  [ТС]     Quicksort, отсортировать элементы массива, стоящие на четных позициях, чтобы они располагались по убыванию #3
samPogosyan, а как задать, чтобы сортировало элементы, которые стоят на четных позициях?
samPogosyan
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 21
30.05.2014, 01:44     Quicksort, отсортировать элементы массива, стоящие на четных позициях, чтобы они располагались по убыванию #4
lesha 13, сейчас у меня компилятор не работает, но могу предположить, что нужно вместо f++ и l-- поставить f+=2 и l-=2, попробуй так
Torotorkina
1 / 1 / 0
Регистрация: 10.04.2016
Сообщений: 29
12.05.2016, 01:33     Quicksort, отсортировать элементы массива, стоящие на четных позициях, чтобы они располагались по убыванию #5
У вас получилось сделать это задание ? А то я немного не понимаю как сделать по убыванию...
Yandex
Объявления
12.05.2016, 01:33     Quicksort, отсортировать элементы массива, стоящие на четных позициях, чтобы они располагались по убыванию
Ответ Создать тему
Опции темы

Текущее время: 06:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru