ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
2 июня
201634 Топик полностью
leon_ (14.07.2010 17:24, просмотров: 99) ответил Ксения на Сортировка слишком дорого по времени, дешевле сделать (long)double только сумматор. Проблема лишь в том, что long double объявлен вне закона, и его редко кто поддерживает (как со стороны железа, так и компилятора).
Вот набросок, как можно  суммировать по возрастанию без сортировки и без учёта соотношения между элементами ( массив, подобный приведённому в изисходном посте, не просуммируется правильно ). long double sum_matr (long double a[], int col) { int i0, i1; while (1) { i0 = -1; i1 = -1; for (int i = col; i--; ) if (a[i] != 0.0) if (i0 == -1) { i0 = i; } else if (fabsl(a[i0]) > fabsl(a[i])) { i1 = i0; i0 = i; } else if (i1 == -1) { i1 = i; } else if (fabsl(a[i1]) > fabsl(a[i])) { i1 = i; } if (i0 == -1) return 0; // Нет ненулевых значений if (i1 == -1) return a[i0]; // Одно ненулевое значение a[i0] += a[i1]; a[i1] = 0.0; } }