Массивы - структура данных для хранения заданного количества значений (одного типа) под одним именем Каждый элемент массива может быть доступен через его индекс, который означает положение элемента в массиве. Индексы начинаются с 0. // Создание массива. Недостаточно просто создать переменную int[] vec; // Все элементы инициализируются нулем vec = new int [10]; //Задание элементов массива и инициализация int [] vec = {10, 20, 30, 40}; Данные массива хранятся в памяти последовательно. // array и vec - ссылочные переменные int [] array={1,2,3,4}; int [] vec = array; vec[3] = 10; Console.Write(vec[3] == array[3]); // Длина массива - его свойство int l = array.Length; // Обращение к любому элементу за постоянное время // Произвольный доступ к данным: // так как данные распологаются последовательно, адреса в памяти могут вычисляться с помощью индексов, позволяя организовать произвольный доступ к данным. int value = vec[0]; value = vec[10000]; // Задание элементов, если в каждое строке отдельное число // первое число - количество элементов массива, второе и последующее сами элементы int size = Convert.ToInt32(Console.ReadLine()); int [] vec = new int [size]; for (int i = 0; i < size; i++) { vec[i] = Convert.ToInt32(Console.ReadLine()); } // Задание элементов массива в одной строке using System.Linq; ... var integers = Console.ReadLine().Split().Select(s => Convert.ToInt32(s)).ToArray(); var a = integers[0]; var b = integers[1]; // Обход массивы с помощью for int[] vec = {1,3,4,6,8,8}; for (int i = 0; i < array.Length; i++) { Console.WriteLine(i + " - "+ vec[i]); } // Обход массива с помощью foreach foreach (int value in vec) { Console.WriteLine (value); } // Линейный поиск bool found = false; int value; int position = -1; for (int i = 0; i < vec.Length; i++) { if (vec[i] == value) { position = i; found = true; } } if (found) { // .. } else { } -Высокая стоимость добавления и удаления данных Доступ O(1) Вставка(N) Удаление(N) Поиск(N) Удаление Для освобождения места в нужной позиции значения сдвигаются по одному элементу за раз int [] vec = {10, 15, 20, 30, 40, 0, 0, 0}; int index = 3; int last = 4; for (int i = index; i < last; i++) { vec[i] = vec[i+1]; } vec[last] = 0; Вставка Допустим необходимо добавить внутрь 15 (если хотим сохранить порядок_ int [] vec = {10, 20, 30, 40, 0, 0, 0, 0}; // vec = {10, 15, 20, 30, 40, 0, 0, 0}; элементы сдвигаются вправо // Поиск минимального и максимального int[] a = ... int min = a[0], max = a[0]; int imin = 0, imax = 0; for (int i = 1; i < a.Length; i++) { if (a[i] < min) { min = a[i]; imin = i; } else if (a[i] > max) { max = a[i]; imax = i; } } // Инверсия элементов for (int left = 0, right = array.Length - 1; left < array.Length/2; left++, right--) { int c = array[left]; array[left] = array[right]; array[right] = c; } //метод бинарного поиска с использованием цикла int[] array = .... int searchedValue = 10, left = 0, right = array.Length-1; //пока не сошлись границы массива int index = -1; while (left <= right) { //индекс среднего элемента var middle = (left + right) / 2; if (searchedValue == array[middle]) { index = middle; break; } else if (searchedValue < array[middle]) { //сужаем рабочую зону массива с правой стороны right = middle - 1; } else { //сужаем рабочую зону массива с левой стороны left = middle + 1; } } } // Использование массивов как счетчиков // Фрагмент программы для подсчета количества цифр, которые встречаются в числе array[digit] ++; Не всегда нужно использовать массив! (некоторые задачи в контесте можно решить без использования массива)