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

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

Войти
Регистрация
Восстановить пароль
 
jock
2 / 2 / 0
Регистрация: 29.10.2011
Сообщений: 38
#1

Сортировка массивов - C++

25.12.2011, 11:19. Просмотров 333. Ответов 2
Метки нет (Все метки)

Добрый день. Помогите, пожалуйста разобраться с задачей:

Дан массив случайных чисел в диапазоне от -20 до +20 (из 20 элементов). Необходимо найти позиции крайних отрицательных элементов (самого левого отрицательного элемента и самого правого отрицательного элемента) и отсортировать элементы находящиеся между ними по возврастанию.

Вот код, получилось вот что:
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
54
#include <iostream>
using namespace std;
int main()
{
int temp,left, right;
 
const int size=20;
int array [size]={1,1,-20,-9,4,-7,1,6,12,8,1,4,1,4,3,19,-14,1,9,20};
cout<<"Ischodniy massiv:\n";
for (int i=0; i<=size-1; i++)
{
    cout<<array[i]<<"\t";
}
cout<<"\n";
 
for (int i=0; i<size; i++)
{
    if (array[i]<0)
    {
        cout<<"Levaya poziciya: "<<i+1<<endl;
        left=i;
        break;
    }
}
for (int i=size-1; i>=0; i--)
{
    if (array[i]<0)
    {
        cout<<"Pravaya poziciya: "<<i+1<<endl;
        right=i;
        break;
    }
}
 
for (int i=0; i<size-1; i++)
{
    for (int j=size-1; i>i; j--)
    {
        if (array[j-1]>array[j])
        {
            temp=array[j-1];
            array[j-1]=array[j];
            array[j]=temp;
        }
    }
}
 
cout<<"Uporyadochenniy massiv:\n";
for (int i=0; i<=size-1; i++)
{
    cout<<array[i]<<"\t";
}
return 0;
}
Не знаю как переделать этот массив, для того, что бы оно сортировало по условию задачи:
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int i=0; i<size-1; i++)
{
    for (int j=size-1; i>i; j--)
    {
        if (array[j-1]>array[j])
        {
            temp=array[j-1];
            array[j-1]=array[j];
            array[j]=temp;
        }
    }
}
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2011, 11:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка массивов (C++):

Обработка одномерных массивов. Сортировка массивов - C++
Здравствуйсте! Помогите пожалуйста написать программу! В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)...

Обработка одномерных массивов. Сортировка массивов - C++
Здравствуйте, помогите пожалуйста решить задачу легким способом. В одномерном массиве, состоящем из n вещественных элементов, вычислить: ...

Сортировка массивов (?) - C++
Суть задания, в принципе, простая - есть три книги, написанные тремя авторами и содержащие разное кол-во страниц. Предлагается...

Сортировка массивов - C++
Приветствую всех. Делаю задание из учебника Дейтелов. Задания: 7.11. (Пузырьковая сортировка) В алгоритме пузырьковой сортировки...

Сортировка 2-х массивов - C++
Вопрос очень простой, я забыл как из 2-х массивов получить 3-ий, что бы в нём присутствовали только элементы первого массива. Т.е. что бы...

Сортировка массивов. - C++
Помогите пожалуйста написать на 2006 с++ сортировки одномерного массива методом Шелла, Шейкера, слиянием, быстрой сортировки по примеру...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
25.12.2011, 11:37 #2
не очень хочу смотреть код, но смысл в чем:
в цикле запоминаешь 2 индекса:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for ( int i = 0; i < size; i ++ )
{
    if ( mas[i] < 0 )
    {
        index_left = i; 
        break;
    }
}
for ( int i = size - 1; i > -1; i ++ )
{
    if ( mas[i] < 0 )
    {
        index_right = i;    
        break;
    }
}
 
for ( int i = index_left+1; i < index_right-1; i ++ )
{
    // сортировка тут    ( сравнивать текущий эл-т со следующим ( i с i+1 ) )
}
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
25.12.2011, 11:42 #3
Сделай значения left и right по умолчанию -1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (right - left < 2)
  cout << "Пространство для сортировки не найдено!\n";
else
{
  for (i = left + 1; i < right - 1; i++)
  {
    min = i;
    for (j = i + 1; j < right; j++)
      if (array[min] > array[j])
         min = j;
    if (min != i)
    {
      temp = array[i];
      array[i] = array[min];
      array[min] = temp;
    }
  }
}
Использована сортировка выбором кажись.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2011, 11:42
Привет! Вот еще темы с ответами:

Сортировка массивов - C++
Здравствуйте, уважаемые форумчане. У меня появилось довольно простоя проблема, над решением которой я бьюсь уже битый час. У нас есть...

Сортировка массивов в С - C++
Люди помогите) как отсортировать одномерный статический рандомный массив по возрастанию без использования указателей? ...

сортировка массивов - C++
есть массив состоящие, допустим, из 10 элементов. нужно написать программу которая сортирует массив по порядку, чтобы сначала были...

Сортировка массивов - C++
Создать массив случайных чисел(данные массива+-int).Сделать сортировку обменом. Потом за усложненным правилом сделать сортировку - сначала...


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

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

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