Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мини шпоры по инфе.docx
Скачиваний:
4
Добавлен:
18.04.2019
Размер:
350.24 Кб
Скачать

Инициализация массивов

Существует огромное количество способов инициализации массивов, следующих видов:

1.     При определении массивов возможна их инициализация, то есть присваивание начальных значений их элементам с указанием количества элементов массива.

 Пример:

int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

float m1[2][2] = {0.1, 0.2, 0.3, 0.4};

float m2[2][2] = {{0.1, 0.2}, {0.3, 0.4}};

 2.     При определении массивов возможна их инициализация, то есть присваивание начальных значений их элементам без указания количества элементов массива. В данном случае компилятор вычисляет длину массива по количеству начальных значений, перечисленных в скобках.

 Пример:

int array[] = {1, 2, 3, 4, 5};                                  // массив длиной 5 элементов

float m[][2] = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6};          // матрица размерностью 3х2

 3.     Ввод начальных значений с помощью присваивания.

 Пример:

int array[5];

float m[2][2];

array[0] = 1, array[1] = 1, array[2] = 1, array[3] = 1, array[4] = 1;

m[0][0] =0.1, m[0][1] =0.2, m[1][0] =0.3, m[1][1] =0.4;

 4.     Ввод начальных значений с клавиатуры без помощи цикла.

 Пример:

int array[5];

float m[2][2];

scanf(“%d%d%d%d%d”, &array[0], &array[1], &array[2], &array[3], &array[4]);

scanf(“%f%f%f%f”, &m[0][0], &m[0][1], &m[1][0], &m[1][1]);

 5.     Ввод начальных значений с клавиатуры с помощью цикла.

 Пример:

int array[5], i, j;

float m[2][2];

for(i=0; i<5; i++)

scanf(“%d”, &array[i]);

 for(i=0; i<2; i++)

for(j=0; j<2; j++)

scanf(“%f”, &m[i][j]);

 6.     Ввод начальных значений с помощью генератора случайных чисел (через цикл);

 Пример:

int array[5], i, j;

float m[2][2];

randomize();

for(i=0; i<5; i++)

array[i] = -10 + random(21);

for(i=0; i<2; i++)

for(j=0; j<2; j++)

m[i][j] = -10.0 + random(201)/10.0;

 

7.     Ввод начальных значений с помощью указателя (через цикл)

 

Примеры [программа pr_13, pr_14, pr_15]]:

Для одномерного массива

Для двумерного массива

int array[5], i, *p;

 

for(p=&array[0]; p<=&array[4]; p++)

scanf(“%d”, p);

 

for(i=0; i<5; i++)

scanf(“%d”, array+i);

 

 

for(i=0; i<5; i++)

*(array+i) = -10 + random(21);

float m[2][2], *p; int i, j;

 

for(p=&m[0][0]; p<=&array[1][1]; p++)

scanf(“%f”, p);

 

for(i=0; i<2; i++)

for(j=0;j<2;j++)

scanf(“%f”, m[i]+i);

 

for(i=0; i<2; i++)

for(j=0;j<2;j++)

*(m[i]+j) = -10 + random(21);

Вывод значений элементов массивов на экран

Для вывода значений массивов на экран используется цикл: для одномерного массива – один цикл, для двумерного массива – два цикла и так далее. 

Примеры для одномерного массива

Примеры для двумерного массива

int array[5], i;

printf(“Array:\n”);

for(i=0; i<5; i++)

printf(“%d\t”, array[i]);

printf(“\n”);

float m[2][2]; int i, j;

printf(“Massiv:\n”);

for(i=0; i<2; i++)

{

for(j=0; j<2; j++)

printf(“%.2f\t”, mas[i][j]);

printf(“\n”);

}

21) Методы сортировки массвива.

Сортировка - это процесс перегруппировки однотипных элементов структуры данных в некотором определенном порядке. Цель сортировки - облегчить последующие поиск, обновление, исключение, включение элементов в структуру данных. Сортировка является важным средством для ускорения работы практически любого алгоритма, в котором требуется частое обращение к определенным элементам структуры данных.

Все методы сортировки разбивают на два класса:

1. внутренняя сортировка (сортировка массивов);

2. внешняя сортировка (сортировка файлов или сортировка последовательностей).

Самыми простыми методами сортировки являются прямые методы сортировки, они требуют порядка O(n2)сравнений значений. Прямые методы можно разбить на три категории:

1. сортировка методом прямого включения;

2. сортировка методом прямого выбора;

3. сортировка методом прямого обмена.