Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
AZIZBEK
0 / 0 / 0
Регистрация: 16.06.2012
Сообщений: 37
#1

Изменить порядок следования элементов в массиве

23.07.2012, 13:39. Просмотров 2072. Ответов 9
Метки нет (Все метки)

изменить порядок следования элементов в массиве так чтобы сначало располагались все отрицательные элементы за тем положительные а потом нули

найти сумму элементов массива расположенных после минемального элемента
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2012, 13:39
Ответы с готовыми решениями:

Изменить порядок следования элементов в массиве на обратный
Здравствуйте. Надо написать функцию, но почему-то он у меня вылетает. Что я...

Изменить порядок следования элементов в массиве используя указатели
Вот что есть, почему не работает правильно не понимаю, подскажите плиз) #...

Если К меньше N, изменить порядок следования элементов в исходном массиве на обратный
Помогите решить эту задачу. Дан массив действительных чисел размером N и...

Изменить порядок следования элементов в массиве на обратный, используя массив указателей
Изменить порядок следования элементов в массиве на обратный, используя массив...

Изменить порядок следования элементов массива
Прошу помочь буду блогодарна ,заранее спасибо!! Изменить порядок следования...

9
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
23.07.2012, 16:31 #2
Я тебе посоветую: сортирни массив по возрастанию, потом начинаю с первого нуля по убыванию.

Цитата Сообщение от AZIZBEK Посмотреть сообщение
найти сумму элементов массива расположенных после минемального элемента
не под силу, извини
0
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
23.07.2012, 16:34 #3

Не по теме:

Цитата Сообщение от kravam Посмотреть сообщение
не под силу, извини


0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 16:40 #4
Цитата Сообщение от kravam Посмотреть сообщение
Я тебе посоветую: сортирни массив по возрастанию, потом начинаю с первого нуля по убыванию.
Слишком затратный алгоритм получится для такой задачи, которую можно за 2 прохода по массиву решить. Подсказка: быстрая сортировка, вернее, ее принцип.
0
Петррр
6159 / 3459 / 897
Регистрация: 28.10.2010
Сообщений: 5,926
23.07.2012, 16:43 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    const size_t size = 7;
    int array[size] = { 1, -2, 0, 6, 8, -6, 2 };
    std::vector<int> vector(array, array + size);
    std::copy(vector.begin(), vector.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    std::partition(
        std::partition(vector.begin(), vector.end(), std::bind2nd(std::less<int>(), 0)),
        vector.end(),
        std::bind2nd(std::greater<int>(), 0));
    std::copy(vector.begin(), vector.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
}
2
Catstail
Модератор
23578 / 11678 / 2044
Регистрация: 12.02.2012
Сообщений: 19,054
23.07.2012, 17:49 #6
Вот несколько прямолинейное, но рабочее решение:
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
#include <math.h>
#include <iostream.h>
 
int sgn(int a)
{
    if (a==0) 
        return 0;
    else
        return (a>0) ? 1 :0;
}
int main(int argc, char* argv[])
{
    int Arr[]={1,2,0,3,-4,-9,4,0,1,1,0};
    int n=sizeof(Arr)/sizeof(int);
    int i,j,tmp;
    for (i=0;i<n-1;i++)
        for (j=i+1; j<n; j++)
        {
            if  (sgn(Arr[i]) != sgn(Arr[j]))
                if ( ((Arr[i] >  0) && (Arr[j] <  0)) ||  
                     ((Arr[i] == 0) && (Arr[j] != 0)) )
                {
                    tmp=Arr[i];
                    Arr[i]=Arr[j];
                    Arr[j]=tmp;
                }
            
        }
        
    for (i=0; i<n; i++) cout << Arr[i] << " ";
    cout << endl;
 
    return 0;
}
Не что иное, как модифицированная сортировка перестановками.
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 20:34 #7
Ну зачем сортировки, лучший алгоритм неспециализированной сортировки имеет сложность http://www.cyberforum.ru/cgi-bin/latex.cgi?O(\sqrt{n}). А это настолько банальная задача, которая менее чем за 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
int main()
{
   int buf, a[] = {1, 2, 0, -2, 0, 3, 0, -3};
   int i, j, n = sizeof(a)/sizeof (*a);
   i = 0;
   j = n - 1;
   while (i < j)
   {
       while (i < j && a[i] < 0)
          i++;
       while (i < j && a[j] >= 0)
          j--;
       if(i < j)
       {
            buf = a[i]; a[i] = a[j]; a[j] = buf;
            i++;
            j--;
       }
   }
   j = n - 1;
   while (i < j)
   {
       while (i < j && a[i] > 0)
          i++;
       while (i < j && a[j] == 0)
          j--;
       if(i < j)
       {
            buf = a[i]; a[i] = a[j]; a[j] = buf;
            i++;
            j--;
       }
   }
   for (i = 0; i < n; i++)
      printf("%d ", a[i]);
   return 0;
}
0
Catstail
Модератор
23578 / 11678 / 2044
Регистрация: 12.02.2012
Сообщений: 19,054
23.07.2012, 21:06 #8
Осторожно замечу, что сортировка-то у меня не полная...
0
Миниатюры
Изменить порядок следования элементов в массиве  
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 21:09 #9
Catstail, сложность Вашего алгоритма http://www.cyberforum.ru/cgi-bin/latex.cgi?O(n^2) в среднем случае.
1
Catstail
Модератор
23578 / 11678 / 2044
Регистрация: 12.02.2012
Сообщений: 19,054
23.07.2012, 21:10 #10
Это да...
0
23.07.2012, 21:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2012, 21:10

Изменить порядок следования элементов массива
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)...

Изменить порядок следования элементов массива на противоположный
Измените порядок следования элементов массива на противоположный.

Изменить порядок следования элементов массива на обратный
Привет всем! Нужна помощь по решению задачи на языке С++. Принципиально я знаю...


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

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

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