Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 20
1

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

29.05.2014, 01:03. Показов 1976. Ответов 4
Метки нет (Все метки)

Имеется одномерный массив длиной 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();
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2014, 01:03
Ответы с готовыми решениями:

Превратить массив так, чтобы в его первой половине располагались элементы стоящие в четных позициях а во второй половине - нечетные
в массиве вычислить: 3) превратить массив таким образом, чтобы в его первой половине...

Отсортировать методом быстрой сортировки элементы массива, стоящие на четных позициях
Имеется одномерный массив длиной N = 50. Отсортировать методом быстрой сортировки элементы массива,...

Построить массив В, содержащий элементы массива А, стоящие в четных позициях и отсортировать его
Здравствуйте господа программисты) Очень нужна ваша помощь в написании программы на языке С++,...

Элементы массива на четных позициях отсортировать по возрастанию, а на нечетных – по убыванию
вот задание: Составить программу для сортировки массива размерностью элементов целого типа...

4
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 21
29.05.2014, 01:27 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);
должно сработать
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 20
29.05.2014, 18:32  [ТС] 3
samPogosyan, а как задать, чтобы сортировало элементы, которые стоят на четных позициях?
0
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 21
30.05.2014, 01:44 4
lesha 13, сейчас у меня компилятор не работает, но могу предположить, что нужно вместо f++ и l-- поставить f+=2 и l-=2, попробуй так
0
1 / 1 / 0
Регистрация: 10.04.2016
Сообщений: 29
12.05.2016, 01:33 5
У вас получилось сделать это задание ? А то я немного не понимаю как сделать по убыванию...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2016, 01:33

Отсортировать элементы массива стоящие на четных местах по убыванию
Задан массив a. Отсортировать все элементы стоящие на четных местах по невозрастанию.

Отсортировать элементы на четных позициях по возрастанию, на нечетных позициях по убыванию
Помогите пожалуйста, срочна нужно помощь. Дан массив размера N. Отсортировать элементы, стоящие на...

Расположить нулевые элементы массива так, чтобы они стояли только на четных позициях
if(fmodf(a,1)!= 0){ a=0; k++; } else ; } ...

Отсортировать положительные элементы массива, стоящие на четных местах по убыванию методом простого выбора
Отсортировать положительные элементы массива, стоящие на четных местах по убыванию методом простого...


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

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

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