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

Битовая сортировка! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Шифрование алгоритмом TEA http://www.cyberforum.ru/cpp-beginners/thread534327.html
Подскажите как можно зашифровать string переменную в коде программы? мне нужно функция, чтоб я туда вставил зашифрованный текст, а она во время работы программы расшифровала этот текст и вставила...
C++ Блок проверки операторов циклов Никак не могу найти где у меня ошибка,после того как добавил циклы Do While и For перестало работать.. case'4': { int sum=0; int n=1; ... http://www.cyberforum.ru/cpp-beginners/thread534322.html
Программа удаляющая программы C++
Привет всем! Хочу написать программу удаляющую другие программы (как Add or Remove Programs в Windows). Какими функциями пользоваться? Я так понимаю, что надо удалять папку с программой и...
Вычисление числа Пи C++
Составить на языке C программу, которая по введённому N возвращает N-ю после запятой десятичную цифру числа Пи. На работу программа должна затрачивать не более 1 Гигафлопа (т.е. примерное время...
C++ Две точки в n-мерном пространстве X=(х1, х2, ..., хn), Y=(y1, y2, ...,yn) http://www.cyberforum.ru/cpp-beginners/thread534300.html
Даны две точки в n-мерном пространстве X=(х1, х2, ..., хn), Y=(y1, y2, ...,yn). Написать программу нахождения расстояния между этими точками и вектора XY.
C++ Дана таблица целых чисел a1, a2, ..., an. Найти сумму S= a1*an+a2*an-1+...+an*a1. Дана таблица целых чисел a1, a2, ..., an. Найти сумму S= a1*an+a2*an-1+...+an*a1. подробнее

Показать сообщение отдельно
Duha666
51 / 51 / 5
Регистрация: 10.03.2012
Сообщений: 138
30.03.2012, 04:54
Один из вариантов реализации:

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
#include <iostream>
using namespace std;
int a[100], b[100], n;
 
int digit(int n, int p)
{
    return (n >> p & 1);
}
int main()
{
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> a[i];
    int k = sizeof(int);
    for(int i = 0; i < k; i++)
    {
        int c[2] = {0};
        for(int j = 0; j < n; j++)
            c[digit(a[j],i)]++;
        for(int j = 1; j < 2; j++)
            c[j] += c[j - 1];
        for(int j = n - 1; j > -1;j--)
            b[--c[digit(a[j],i)]] = a[j];
        for(int j = 0; j < n; j++)
            a[j] = b[j];
    }
    for(int i = 0; i < n; i++)
        cout << a[i] <<endl;
    return 0;
}

Цитата Сообщение от zewer Посмотреть сообщение
Можете подсказать насчет этих команд
>> - битовый сдвиг вправо. << - битовый сдвиг влево. в функции digit это используется. Мы сдвигаем число вправо что бы нужный нам бит стал первым, а потом получаем его с помощью логического "и" с 1
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru