Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
shank923
0 / 0 / 0
Регистрация: 13.12.2014
Сообщений: 32
#1

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

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

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

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

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

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

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

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

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

14
Dimension
Dimension
573 / 442 / 136
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
11.10.2015, 14:18 #2
отсортируйте его
0
_Ivana
3229 / 1857 / 157
Регистрация: 01.03.2013
Сообщений: 5,085
Записей в блоге: 5
11.10.2015, 14:20 #3
За О(n) причем.
0
Saska81
3 / 0 / 0
Регистрация: 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
Геомеханик
776 / 582 / 404
Регистрация: 26.06.2015
Сообщений: 1,383
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
17715 / 11736 / 1872
Регистрация: 24.12.2010
Сообщений: 23,538
12.10.2015, 21:12 #7
Цитата Сообщение от shank923 Посмотреть сообщение
нужно за один цикл сделать и без использования сортировки.
Подсчитать количество нулей и заполнить массив.
1
Chertenok_n_13
214 / 120 / 42
Регистрация: 14.03.2011
Сообщений: 566
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 / 0
Регистрация: 11.10.2015
Сообщений: 16
12.10.2015, 21:18 #9
ну тогда берите массив ArrayList длинной = количеству значений и при проверке по очереди:
если единица то отправляем в конец списка
если ноль то отправляем в начало
еще ноль в начало+1
еще единица в конец-1
и так до последнего значения.
один цикл и без сортировки
0
pti4ka
1 / 1 / 0
Регистрация: 10.10.2015
Сообщений: 17
12.10.2015, 21:42 #10
нужно за один цикл сделать и без использования сортировки.
Попробуй пузырьковую сортировку
1
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 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
3229 / 1857 / 157
Регистрация: 01.03.2013
Сообщений: 5,085
Записей в блоге: 5
13.10.2015, 01:10 #13
За один проход?.... Я не могу.
0
Barrent
246 / 122 / 41
Регистрация: 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 / 2
Регистрация: 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
Привет! Вот еще темы с ответами:

Переставить элементы массива так, чтобы сначала располагались все нули, затем все двойки и, наконец, все единицы - C++
Добрый день ! У меня к вам просьба. Помогите решить задачу по с++ начинающему чайнику. :wall: Задача. В массиве A(N) каждый...

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

Как преобразовать файл в биты (в нули и единицы), чтобы потом можно было его зашифровать в код Грея? - C++
Добрый день всем! У меня к вам несколько вопросов, которые касаются следующего: В институте дали задание сделать программу которая...

Отсортировать заданную последовательность так, чтобы все нули оказались в конце - C++
Задача: Дана последовательность чисел, отсортировать эту последовательность так, чтобы все нули оказались в конце, а все остальные числа...


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

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

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