Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
shank923
0 / 0 / 0
Регистрация: 13.12.2014
Сообщений: 32
1

Расположить элементы массива так, чтобы нули было в начале, а единицы в конце

11.10.2015, 13:56. Просмотров 919. Ответов 14
Метки нет (Все метки)

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

Отсортировать массив из 0 и 1 так, чтобы все нули находились в начале, а все единицы - в конце массива
Тема: Функции 1. Дано одномерный массив, заполненный 0 и 1 в произвольном...

Отсортировать массив таким образом, чтобы все нули находились в начале, а единицы — в конце массива
Здравствуйте, дано такое задание Элементами массива IM(N) являются числа 0 и 1....

Переставить элементы массива так, чтобы отрицательные оказались в начале, положительные - в конце
дан массив целых чисел переставить его элементы так, чтобы отрицательные...

Расположить элементы массива так, чтобы сначала были отрицательные и нули, а потом положительные
Дан массив из 12 элементов. Расположить элементы так,чтобы сначала были...

Дан массив а1+ a2+…+an Переставить его элементы так чтобы в начале массива расположились все его неотрицательные элементы, а в конце - отрицательные
Дан массив а1+ a2+…+an помогите переставить его элементы так чтобы в начале...

14
Dimension
Dimension
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
11.10.2015, 14:18 2
отсортируйте его
0
_Ivana
3236 / 1869 / 235
Регистрация: 01.03.2013
Сообщений: 5,111
Записей в блоге: 5
11.10.2015, 14:20 3
За О(n) причем.
0
Saska81
3 / 0 / 1
Регистрация: 11.10.2015
Сообщений: 16
11.10.2015, 14:35 4
в данном случае используем быструю сортировку:
Java
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
import java.util.Arrays;
import java.util.Random;
 
 
public class SortFast01 {
 
    public static void main(String[] args) {
        // 
 
        int[] mas = new int [20];
        
        for (int i=0; i<mas.length; i++){
            Random rand = new Random();
            mas[i] = rand.nextInt(2);
 
            System.out.print(mas[i] + " ");
            }
        //быстрая сортировка:
        Arrays.sort(mas);
        
        System.out.println();
        
        //и вывод на экран:
        for (int i : mas) {
            System.out.print(i + " ");
        }
    }
}
0
Геомеханик
792 / 597 / 939
Регистрация: 26.06.2015
Сообщений: 1,409
11.10.2015, 15:13 5
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
#include <iostream>
 
template<unsigned N>
void sort_nz(int a[], unsigned n){
    unsigned i, nz[N] = {0};
    for(i = 0; i < n; ++i)
        ++nz[a[i]];
    
    i = 0;
    for(unsigned j = 0; j < N; ++j){
        for(unsigned p = 0; p < nz[j]; ++p)
            a[i++] = j;
    }
}
 
int main(void){
    int    a[] = { 1, 1, 0, 0, 0, 1, 0 };
    unsigned n = sizeof(a)/sizeof(a[0]);
 
    sort_nz<2>(a, n);
    for(unsigned i = 0; i < n; ++i)
        std::cout << a[i] << ' ';
    return 0;
}
1
shank923
0 / 0 / 0
Регистрация: 13.12.2014
Сообщений: 32
12.10.2015, 20:53  [ТС] 6
нужно за один цикл сделать и без использования сортировки.
0
Байт
Эксперт C
19233 / 12357 / 2608
Регистрация: 24.12.2010
Сообщений: 25,444
12.10.2015, 21:12 7
Цитата Сообщение от shank923 Посмотреть сообщение
нужно за один цикл сделать и без использования сортировки.
Подсчитать количество нулей и заполнить массив.
1
Chertenok_n_13
214 / 120 / 99
Регистрация: 14.03.2011
Сообщений: 590
12.10.2015, 21:16 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
main(){
int mas[10];
int kol=0;
int i=0;
for (i=0; i<10; i++) {
scanf("%d", &mas[i]);
if (mas[i]==0) kol++;
            }
printf("\n\n");
for (i=0; i<10; i++)
{if (kol!=0) { mas[i]=0; kol--;} else mas[i]=1;
printf("%5d",mas[i]);
}
getch();
}
0
Saska81
3 / 0 / 1
Регистрация: 11.10.2015
Сообщений: 16
12.10.2015, 21:18 9
ну тогда берите массив ArrayList длинной = количеству значений и при проверке по очереди:
если единица то отправляем в конец списка
если ноль то отправляем в начало
еще ноль в начало+1
еще единица в конец-1
и так до последнего значения.
один цикл и без сортировки
0
pti4ka
1 / 1 / 1
Регистрация: 10.10.2015
Сообщений: 17
12.10.2015, 21:42 10
нужно за один цикл сделать и без использования сортировки.
Попробуй пузырьковую сортировку
1
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
12.10.2015, 21:47 11
Цитата Сообщение от pti4ka Посмотреть сообщение
Цитата Сообщение от shank923 Посмотреть сообщение
нужно за один цикл сделать и без использования сортировки.
Попробуй пузырьковую сортировку
А у тебя перспективная логика...
0
shank923
0 / 0 / 0
Регистрация: 13.12.2014
Сообщений: 32
13.10.2015, 00:42  [ТС] 12
Можете это реализовать на си++?
0
_Ivana
3236 / 1869 / 235
Регистрация: 01.03.2013
Сообщений: 5,111
Записей в блоге: 5
13.10.2015, 01:10 13
За один проход?.... Я не могу.
0
Barrent
246 / 122 / 54
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
13.10.2015, 01:33 14
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
    int A[]{ 0,1,1,1,0,1,1,0 };
    int* begin = A;
    int* end = &A[sizeof(A) / sizeof(A[0]) - 1];
    while (begin < end) {
        if (*begin == 1 && *end == 0) {
            swap(*begin, *end);
            begin++;
            end--;  
            continue;
        }
        if (*begin == 1 && *end == 1) {
            end--;
            continue;
        }
        if (*begin == 0 && *end == 0) {
            begin++;
            continue;
        }
        begin++;
        end--;
    }
    for (int a : A)
        cout << a;
    cout << endl;
1
ldenush
1 / 1 / 4
Регистрация: 17.02.2013
Сообщений: 12
13.10.2015, 06:50 15
C++
1
2
3
4
5
6
7
for(int i = 0, k = 0; i < N; ++i)
       if(m[i] == 0)
       {
        m[i] = 1;
        m[k] = 0;
        ++k;
       }
0
13.10.2015, 06:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2015, 06:50

Дан массив а1,а2,,…,аn. Переставить его элементы так, чтобы в начале массива расположились все его неотрицательные элементы, а в конце – отрицательные
Помогите плиз написать программу: Дан массив а1,а2,,…,аn. Переставить его...

Переставить элементы массива так, чтобы сначала располагались все нули, затем все двойки и, наконец, все единицы
Добрый день ! У меня к вам просьба. Помогите решить задачу по с++ начинающему...

Разместить в массиве все положительные элементы в начале, отрицательные - в конце, посередине - нули
Всем доброго времени суток! Большая просьба помочь написать программу. Нужно...


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

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

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