
- •Основные определения
- •Операции над массивами
- •Массивы и указатели
- •Варианты обращения к элементам массива
- •Примеры вывода элементов массива через указатель
- •Передача одномерного массива в функцию в качестве параметра
- •Способы передачи одномерного массива в качестве параметра
- •Массив указателей на функцию
- •Динамические одномерные массивы
- •Способы определения динамических одномерных массивов
- •Пример нахождения среднего значения элементов динамического массива
- •Перегрузка функций при работе с массивами
- •Шаблоны функций при работе с массивами
- •Поиск в массиве
- •Сортировка массивов
- •Сортировка обменом («пузырьковая» сортировка)
- •Сортировка одномерного массива по некоторому признаку
- •Сортировка вставкой
- •Сортировка выбором
- •Примеры
- •Нахождение номера первого вхождения числа y в массив Х
- •Поиск в массиве максимального элемента и его номера
- •Проверка элементов массива на некоторую закономерность
- •Построение элементов массива в соответствии с некоторой закономерностью.
- •Нахождение количества положительных элементов между максимальным и минимальным элементами целочисленного массива
- •Нахождение суммы элементов вещественного массива, расположенных правее последнего отрицательного элемента
int main()
{const int n=10; int s[n];
int find, i;
for ( i=0; i<n; i++) s[i] = i*10; //заполнение массива числами for ( i=0; i<n; i++) cout << setw (4) << s[i]; //вывод массива cout<<endl;
cout << "\n value of find: "; cin >> find;//ввод числа для поиска int res=poisk(s, n, find);
if (res==-1)
cout << "\nno element";
else
|
cout << "\nelement nomer " << res; |
|
|
cout << endl; |
|
|
_getch(); |
|
} |
return 0; |
|
int poisk(int *mas, int n, int find) |
||
{ |
int left = 0, right = n-1, mid = 0; |
|
|
||
|
while (left <= right) |
|
|
{mid = (left+right+1)/2; |
|
|
if (mas[mid] > find) |
right = mid-1; |
|
else if (mas[mid] < find) |
left = mid+1; |
|
else break; |
|
|
} |
|
if (mas[mid] == find) return mid;
else return -1;
}
Сортировка массивов
Сортировка – это процесс упорядочения некоторой последовательности нумерованных объектов в соответствии с заданным признаком. Цель сортировки – облегчить последующий поиск элементов в отсортированной последовательности.
При решении задачи сортировки обычно выдвигается требование минимального использования дополнительной памяти, т.е. в частности, недопустимость применения дополнительных массивов. Для оценки быстродействия алгоритмов различных методов сортировки, как правило, используют два показателя: количество присваиваний и количество сравнений.
Все методы сортировки можно разделить на две большие группы: прямые методы сортировки и улучшенные методы сортировки. Прямые методы сортировки по принципу, лежащему в основе метода, подразделяются на три подгруппы:
сортировка обменом («пузырьковая» сортировка); сортировка вставкой (включением); сортировка выбором (выделением).
Прямые методы на практике используются довольно редко, так как имеют относительно низкое быстродействие. Однако они хорошо показывают суть основанных на них улучшенных методов. В то же время, в некоторых случаях (как правило, при небольшой длине массива и/или особом исходном расположении элементов массива) некоторые из прямых методов могут даже превзойти улучшенные методы). Улучшенные методы сортировки, основываясь на тех же принципах, что и прямые, используют некоторые оригинальные идеи для ускорения процесса сортировки. С точки зрения
программиста наибольший интерес представляют сортировки массивов, строк, файлов.
Программирование – лекция 12 (лекции Стрикелевой Л.В.) |
20 |