Массив представляет набор однотипных данных. Формальное определение массива выглядит следующим образом


Download 46.82 Kb.
bet2/3
Sana30.04.2023
Hajmi46.82 Kb.
#1405970
1   2   3
Bog'liq
Массивы

for(auto &subnumbers : numbers) &subnumbers представляет ссылку на подмассив в массиве. Во внутреннем цикле for(int number : subnumbers) из каждого подмассива в subnumbers получаем отдельные его элементы в переменную number и выводим ее значение на консоль.
Что такое сортировка и зачем она нужна

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

Пузырьковая сортировка (Bubble sort);
Сортировка выбором (Selection sort);
Сортировка вставками (Insertion sort);
Быстрая сортировка (Quick sort);
Сортировка слиянием (Merge sort);
Сортировка Шелла (Shell sort);
Сортировка кучей (Heap sort).

Пузырьковая сортировка


В пузырьковой сортировке каждый элемент сравнивается со следующим. Если два таких элемента не стоят в нужном порядке, то они меняются между собой местами. В конце каждой итерации (далее называем их проходами) наибольший/наименьший элемент ставится в конец списка.

void swap(int* xp, int* yp)


{
int temp = *xp;
*xp = *yp;
*yp = temp;
}
// A function to implement bubble sort
void bubbleSort(int arr[], int n)
{
int i, j;
for (i = 0; i < n - 1; i++)
// Last i elements are already in place
for (j = 0; j < n - i - 1; j++)
if (arr[j] > arr[j + 1])
swap(&arr[j], &arr[j + 1]);
}
 

Сложность в лучшем случае: O(n).


Сложность в среднем случае: O(n2).
Сложность в худшем случае: O(n2).

2. Сортировка выбором


Ищем наименьшее значение в массиве и ставим его на позицию, откуда начали проход. Потом двигаемся на следующую позицию.

#include
#include // для std::swap. В C++11 используйте заголовок

int main()
{
const int length = 5;
int array[length] = { 30, 50, 20, 10, 40 };

// Перебираем каждый элемент массива (кроме последнего, он уже будет отсортирован к тому времени, когда мы до него доберемся)
for (int startIndex = 0; startIndex < length - 1; ++startIndex)
{
// В переменной smallestIndex хранится индекс наименьшего значения, которое мы нашли в этой итерации.
// Начинаем с того, что наименьший элемент в этой итерации - это первый элемент (индекс 0)
int smallestIndex = startIndex;

// Затем ищем элемент поменьше в остальной части массива
for (int currentIndex = startIndex + 1; currentIndex < length; ++currentIndex)
{
// Если мы нашли элемент, который меньше нашего наименьшего элемента,
if (array[currentIndex] < array[smallestIndex])
// то запоминаем его
smallestIndex = currentIndex;
}

// smallestIndex теперь наименьший элемент.
// Меняем местами наше начальное наименьшее число с тем, которое мы обнаружили
std::swap(array[startIndex], array[smallestIndex]);
}

// Теперь, когда весь массив отсортирован - выводим его на экран
for (int index = 0; index < length; ++index)
std::cout << array[index] << ' ';

return 0;
}

Поиск элемента

1. Использование 


Download 46.82 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling