Хранение данных
Примеры
Python |
Хранение данных |
fin = open("26.txt") # открытие файла
N = int(fin.readline())
data = [0]*N
for i in range(N):
data[i]=int(fin.readline())
Fin.close() # закрытие файла
|
Для хранения данных используем список.
В примере указан способ сохранить все данные в список, в случае если они в файле записаны по одному числу в строке |
C++ |
Чтение данных |
#include<vector>
...
vector data(N);
for( int i = 0; i < N; i++ )
cin >> data[i];
|
Проще всего использовать вектор размерностью N.
|
Pascal ABC.net |
Чтение данных |
var data: array of integer;
...
SetLength(data, N);
for var i:=0 to N-1 do
read(data[i]);
|
Используем динамический массив^
- считываем число N ;
- задаем размер массива (SetLength(data, N); );
- заполняем его стандартным образом. |
Сортировка данных
Для сортировки необходимо использовать встроенные функции.
Писать собственные реализации алгоритмов сортировки не следует, велика вероятность совершить ошибку, к тому же это отнимает время на самом экзамене.
Примеры
Python |
Описание |
data.sort()
|
Сортировка массива по возрастанию значений. |
data.sort(reverse=True)
|
Сортировка массива по убыванию значений. |
def cmp(n):
return n % 10
...
data.sort(key=cmp)
|
Сортировку по какому-либо другому критерию можно оформить в виде функции, возвращающей значение, по которому следует делать сортировку
(пример описывает функцию, которая возвращает последнюю цифру числа, следовательно сортировка будет происходить по последней цифре).
Для применения этой функции необходимо в методе sort() прописать аргумент key и присвоить ему имя функции. |
data1 = sorted(data, key = cmp)
|
Если необходимо создать новый отсортированный массив, а старый сохранить, то необходимо использовать функцию sorted(). |
data.sort( key = lambda x: (-x[1], x[0]%10) )
|
При сортировке кортежей, сначала сортировка происходит по первому элементу, затем по второму и т.д.
Если необходимо поменять порядок, то это можно сделать, используя либо отдельную функцию (как описано выше), так и просто лямбда-функцию.
В данному примере, массив сортируется сначала по убыванию второго элемента (-x[1] ), при их равенсстве данные сортируются по возрастанию последней цифры второго элемента кортежа. |
C++ |
Чтение данных |
sort(data.begin(), data.end())
|
Сортировка вектора по возрастанию. |
sort(data.begin(), data.end(), greater <int> ())
или с использованием реверсивного итератора
sort(data.rbegin(), data.rend());
|
Сортировка массива по убыванию. |
bool cmp(int i1, int i2)
{
return (i1 % 10 < i2 % 10);
}
...
sort( data.begin(), data.end(), cmp);
|
Сортировка массива по другому критерию (в примере: по возрастанию последней цифры) |
Pascal ABC.net |
Чтение данных |
data.Sort;
|
Сортировка массива по возрастанию. |
var data1 := data.OrderBy( x->x mod 10).ToArray;
|
Пример сортировке по последней цифре по возрастанию (OrderBy ), с использованием лямбда-функции. После сортировки создается новый массив.
Для сортировке по убыванию используется OrderByDescending . |