Форум программистов, компьютерный форум 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; cout << "Cycle While: "; while ((1/(n*n))>(DBL_MIN)) { sum+=(1/(n*n)); n++; http://www.cyberforum.ru/cpp-beginners/thread534322.html
Программа удаляющая программы C++
Привет всем! Хочу написать программу удаляющую другие программы (как Add or Remove Programs в Windows). Какими функциями пользоваться? Я так понимаю, что надо удалять папку с программой и информацию из реестра. Если что-то похожее было в темах, киньте, пожалуйста, ссылку.
Вычисление числа Пи C++
Составить на языке C программу, которая по введённому N возвращает N-ю после запятой десятичную цифру числа Пи. На работу программа должна затрачивать не более 1 Гигафлопа (т.е. примерное время работы на современных ПК - не более 0.5 секунды). Примеры: Вход: 0 Выход: 3 Вход: 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
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
30.03.2012, 19:27     Битовая сортировка!
C++
1
2
3
4
5
6
7
8
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.
Если у нас было x нулей, то они все числа с единицей на рассматриваемом бите будут располагаться на позициях 1..x. Если же у нас есть k единиц, то числа с единицей будут располагаться на позициях x+1..x+k. Таким образом мы ставим правую границу расположения элемента с определенной цифрой. А потом пробегаемся и расставляем на нужную позицию.
Вот ещё пример.
Есть числа в битовом представлении: 101 100 001.
Подсчитаем правые границы - 1, 3(1 + 2).
Текущий бит числа 101 - 1. Поэтому ставим его на позицию 3 и уменьшаем правую границу этой цифры:
. . 101 границы - 1, 2
Далее расставляем 100
100 . 101 границы - 0 2
И наконец 001
100 001 101.
И так далее до самого левого бита.
 
Текущее время: 11:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru