sort.pptx
- Количество слайдов: 11
Сортировка методом простого выбора Подготовил и оформил : Мухаметшин Б. З. гр. ПМ-137 Проверил : Насибуллаев И. Ш.
содержание 1. 2. 3. 4. 5. 6. 7. 8. 9. Что такое сортировка и зачем она нужна? Идея сортировки простым выбором. Псевдокод алгоритма. Блок схема сортировки. Графическое представление алгоритма. Реализация на языке C++. Некоторые сведения : время реализации, сложность. Итог работы алгоритма(простой пример в C++) Вывод.
Что же такое сортировка? Для чего она нужна? Допустим у вас есть некоторый список , совокупность объектов , ну или просто какие-то карточки с цифрами , расположенные хаотичным образом, которые вам необходимо упорядочить в порядке возрастания (убывания). Сортировка это то что вам нужно!!! Вот спасибо…) Представим наши объекты в виде массива. Где каждый элемент имеет некое значение. Пример : a[0]=3 , a[1]=1 , a[2]=2 вот он наш массив с некоторыми значениями. sort Применяем нашу сортировку. В результате получаем : a[1]=1 , a[2]=2 , a[0]=3
Идея алгоритма. Ø Итак , допустим нам нужно отсортировать массив по не убыванию(т. е. an ≤ an+1) Ø Находим наибольший элемент массива и меняем его с последним. Ø Находим наибольший элемент среди оставшихся и меняем его с предпоследним и т. д. Ø В результате мы получим отсортированный массив.
Псевдокод алгоритма. 1) В цикле по j=[n, 1] делать пункт 2) 2)Найти наибольшее из a[j]…a[0]. Пусть это a[i]. 3) Поменять местами a[i] и a[j]
Блок схема Вывод массива j=[n, 1] max=a[0] index=0 i=[1, n-1] max=a[i] index=i да max<a[i] h=a[index]=a[j-1]=h
Собственно наш алгоритм в действии! А точнее: что происходит с массивом состоящим к примеру из 8 элементов. Долой хаос !!! …даешь отсортированный массив? )))
Итак , реализация алгоритма!!! //предварительно инициализируем массив а[] for(int j=5; j>0; j--) { int index=0, max=a[0]; for(int i=1; i<j; i++) { if (max<a[i]) {max=a[i]; index=i; } } int h=a[index]; a[index]=a[j-1]; a[j-1]=h; } //в итоге массив a[] отсортирован
Предлагаю рассмотреть некоторые свойства нашего алгоритма , такие как сложность и время реализации. Для начала следует уточнить эти понятия. Сложность - это стоимость работы, требуемой для решения вычислительной проблемы т. е. проще говоря сколько операций будет (n-1)! =n! Что не очень выгодно при больших n т. к. даже у простой пузырьковой сортировки сложность состовляет n² , а n² < n! Что касается времени то t~n² Сложность выполнено. В нашем случает ~n пузырек простого выбора Число элементов
Результат реализации на C++
Вывод Наш алгоритм не столь выгодный в плане ресурсоемкости для большого числа элементов. В связи с чем рекомендую использовать сортировку иного типа.
sort.pptx