5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 51
|
|
1 | |
сортировка большого количество чисел03.04.2012, 20:42. Показов 2098. Ответов 16
Метки нет (Все метки)
Здравствуйте! Хотел посчитать количество перестановок при сортировке с слиянием, но не ожиданное столкнулся с такой проблемой, при сортировке 100000 и более чисел программа показывает что сделано отрицательное количество перестановок, помогите разобраться с этой проблемой,
например при сортировке 100000 чисел вышло что сделано -1797893816 перестановок.....
0
|
03.04.2012, 20:42 | |
Ответы с готовыми решениями:
16
В массиве найти количество нечетных чисел расположенных после второго самого большого числа Сортировка большого одномерного массива Сортировка очень большого файла. Сортировка включением. Найдите количество чисел равных К |
157 / 157 / 27
Регистрация: 29.03.2012
Сообщений: 418
|
|
03.04.2012, 20:46 | 2 |
код программы дайте!
Какой используете тип для переменной подсчета перестановок ?
0
|
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 51
|
||||||
03.04.2012, 20:51 [ТС] | 3 | |||||
интежер
Добавлено через 1 минуту
Ой извините, не сортировка с слиянием, а со вставками(insertion).
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
03.04.2012, 20:53 | 4 |
Попробуйте объявить count как unsigned long int, скорей всего просто число перестановок не помещается в знаковую целочисленную переменную, и происходит переполнение. Возможно даже не поместится и в беззнаковую.
1
|
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 51
|
|
03.04.2012, 21:00 [ТС] | 5 |
Спасибо, попробую, но о результате сообщу только через 2 часа, аж очень долго над ждать пока прога отсортирует все числа..
0
|
157 / 157 / 27
Регистрация: 29.03.2012
Сообщений: 418
|
|
03.04.2012, 21:01 | 6 |
1
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
03.04.2012, 21:20 | 7 |
size_t на большинстве 32 битных системах эквивалентен unsigned long int ( то есть 4 байтам ).
0
|
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 51
|
|
03.04.2012, 21:36 [ТС] | 8 |
Получилось, что касается типа, то лучше использовать size_t, потому что у меня 64 битная система и я собираюсь отсортировать еще больше чисел
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
03.04.2012, 21:42 | 9 |
И компилируется программа как 64 битная? Тогда да, size_t в этом случае будет равен 8 байтам.
0
|
157 / 157 / 27
Регистрация: 29.03.2012
Сообщений: 418
|
|
03.04.2012, 21:58 | 10 |
попробовал собрать под 64 битную. У меня получилось, что они тоже равны)
Вот: toha@tux ~ $ g++ -m32 ./sizeof.cpp toha@tux ~ $ ./a.out sizeof(int) = 4 sizeof(unsigned losg int) = 4 sizeof(size_t) = 4 toha@tux ~ $ g++ -m64 ./sizeof.cpp toha@tux ~ $ ./a.out sizeof(int) = 4 sizeof(unsigned losg int) = 8 sizeof(size_t) = 8 получается нет разницы чем пользовать, если только size_t короче выглядит.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||
03.04.2012, 22:26 | 11 | |||||
64 битные целые в С++ появились только в новом стандарте, который еще не все компиляторы поддерживают. Даже в последнем gcc 4.7.0 его поддержку нужно указывать в ручную в качестве параметра. Возможно ваш gcc использует свое расширение для представления 64 битных целых, которое не входит в стандарт. Вот что я получаю с кодом
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
04.04.2012, 15:08 | 13 |
diagon, поддерживается как свое расширение а не как стандарт, при компиляции в последнем GCC например c вышеуказанными опциями, нужно указывать флаг -std=c++11 чтоб включить поддержку нового стандарта, которая еще находится на стадии разработки, иначе ошибка при компиляции. Так же вроде и в VS10, если в проекте отключить расширения компилятора не входящие в стандарт, то long long в С++ так же будет не доступным.
0
|
Higher
|
|
04.04.2012, 15:27 | 14 |
Ну да, можно просто не писать -pedantic-errors, вы не задумывались о таком решении?
В каком смысле? Сам стандарт уже давно есть. Поддержка в gcc пока не полная, но пробелы, в основном, с многопоточностью связаны. А long long есть даже в моей версии gcc(4.6.1), которой уже более полугода.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
04.04.2012, 15:46 | 15 |
Нет не задумывался, потому что мне не нужны нестандартные расширения.
Его утвердили относительно недавно. long long был и в более ранних версиях, но, повторюсь, как свое расширения, а не из стандарта.
0
|
Higher
|
|
04.04.2012, 15:56 | 16 |
В случае c long long на это можно закрыть глаза, но это ваше право.
В августе еще. А я про новый стандарт говорил, поддержка long long в нем достаточно стабильно реализована, бояться нечего.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
04.04.2012, 16:03 | 17 |
Не по теме: Ну я думаю это относительно не так давно, если учитывать, что предыдущий был утвержден аж 13 лет назад В том то и дело, что даже если без pedantic-errors не указать -std=c++11, то поддержки нового стандарта не будет, и long long будет в данном случае как расширение
0
|
04.04.2012, 16:03 | |
04.04.2012, 16:03 | |
Помогаю со студенческими работами здесь
17
Сортировка большого объёма данных Сортировка очень большого текстового файла Сортировка по размерам от Большого-Малому не работает Количество итераций, за которое будет выполнена сортировка в заданной последовательности чисел Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |