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

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

Восстановить пароль Регистрация
 
jock
2 / 2 / 0
Регистрация: 29.10.2011
Сообщений: 38
25.12.2011, 11:19     Сортировка массивов #1
Добрый день. Помогите, пожалуйста разобраться с задачей:

Дан массив случайных чисел в диапазоне от -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++
C++ сортировка массивов
Сортировка массивов C++
C++ Сортировка массивов
C++ Сортировка массивов
Сортировка 2-ух массивов C++
Сортировка массивов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 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
 Аватар для darkknight2008
61 / 61 / 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;
    }
  }
}
Использована сортировка выбором кажись.
Yandex
Объявления
25.12.2011, 11:42     Сортировка массивов
Ответ Создать тему
Опции темы

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