Где диапазон - несколько ячеек:
Excel.Worksheet sheet = workbook.ActiveSheet;
Excel.Range rng = (Excel.Range) sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[3,3]);
Где диапазон - одна ячейка:
Excel.Worksheet sheet = workbook.ActiveSheet;
Excel.Range rng = (Excel.Range) sheet.Cells[1, 1];
Алгоритмические детали команды UNIX Sort говорят, что Unix Sort использует внешний алгоритм сортировки слиянием R-Way. Ссылка дает более подробную информацию, но по сути она делит ввод на более мелкие части (которые помещаются в память), а затем объединяет каждую часть вместе в конце.
Команда sort
сохраняет рабочие данные во временных файлах на диске (обычно в / tmp
).
Я не знаком с программой, но думаю, что это делается с помощью внешней сортировки (большая часть проблемы хранится во временных файлах, тогда как относительно небольшая часть проблемы хранится в памяти вовремя). См. Дональд Кнут Искусство компьютерного программирования, Vol. 3 Сортировка и поиск, раздел 5.4 для очень глубокого обсуждения предмета.
ПРЕДУПРЕЖДЕНИЕ: Этот сценарий запускает одну оболочку для каждого фрагмента, для действительно больших файлов их может быть сотни.
Вот сценарий, который я написал для этой цели. На 4-процессорной машине производительность сортировки улучшилась на 100%!
#! /bin/ksh
MAX_LINES_PER_CHUNK=1000000
ORIGINAL_FILE=$1
SORTED_FILE=$2
CHUNK_FILE_PREFIX=$ORIGINAL_FILE.split.
SORTED_CHUNK_FILES=$CHUNK_FILE_PREFIX*.sorted
usage ()
{
echo Parallel sort
echo usage: psort file1 file2
echo Sorts text file file1 and stores the output in file2
echo Note: file1 will be split in chunks up to $MAX_LINES_PER_CHUNK lines
echo and each chunk will be sorted in parallel
}
# test if we have two arguments on the command line
if [ $# != 2 ]
then
usage
exit
fi
#Cleanup any lefover files
rm -f $SORTED_CHUNK_FILES > /dev/null
rm -f $CHUNK_FILE_PREFIX* > /dev/null
rm -f $SORTED_FILE
#Splitting $ORIGINAL_FILE into chunks ...
split -l $MAX_LINES_PER_CHUNK $ORIGINAL_FILE $CHUNK_FILE_PREFIX
for file in $CHUNK_FILE_PREFIX*
do
sort $file > $file.sorted &
done
wait
#Merging chunks to $SORTED_FILE ...
sort -m $SORTED_CHUNK_FILES > $SORTED_FILE
#Cleanup any lefover files
rm -f $SORTED_CHUNK_FILES > /dev/null
rm -f $CHUNK_FILE_PREFIX* > /dev/null
См. Также: « Сортировка больших файлов быстрее с помощью сценария оболочки »