Знайте, Intuit, лекция, сортиране масиви
сортиране задача
Тази лекция е посветена на чисто алгоритмичен поръчване данни проблем.
Необходимостта да сортирате всяка величина се случва в програмирането много често. Например, въвеждане на данни, се предоставя "смесен", а програмата ви е по-удобно да се справя подредена последователност. Има ситуации, в които предварително сортиране на данни може да намали значителна част от алгоритъма на моменти и по време на изпълнението - в десетки пъти.
Въпреки това, обратното е вярно. Без значение колко добър и ефективен, без значение от избрания алгоритъм. но ако той използва подзадачи като "лош" сортиране цялата работа по оптимизирането й е безполезна. Слабо приложени сортиране на входни данни може значително да намали ефективността на алгоритъма като цяло.
методи за поръчка са разделени на вътрешния (за обработка на масиви) и външната (занимаващи се с файлове) 1 За повече информация за различните поръчки алгоритми, вижте книгата на Доналд Кнут е "Изкуството на компютърното програмиране", том 3, "сортиране и търсене."
Тази лекция ще бъде посветена само на вътрешния сортирането. Тяхната важна характеристика е, че тези алгоритми не се нуждаят от допълнителна памет: цялата работа да се рационализира, произведени в рамките на същия масив.
прост сортиране
С прости методи на вътрешните сортиране включват сложността на която е пропорционална на квадрата на измерение на входните данни. С други думи, в масив сортиране. състоящ се от N компоненти. Такива алгоритми ще бъдат проведени * N 2 действие, където С - константа.
Броят на необходимите действия за поръчване на поредица от данни, разбира се, не зависи само от дължината на последователност, но и на неговата структура. Например, ако на входа вече е подредена последователност (каква програма. Това е разбираемо, не знам), броят на операциите ще бъде много по-малък, отколкото в случай на смесени вход.
Обикновено, сложността на алгоритмите се броят отделно за броя на сравненията, а броят на движение на данни в съхранение (трансфери), тъй като тези операции различно време. Въпреки това, точните стойности рядко са в състояние да се намери, така че за алгоритмите за оценка са ограничени до термина "пропорционално", което не се вземат предвид конкретните стойности на константите в крайна формула. Общата ефективност на алгоритъма обикновено се оценява "средно": средната аритметична стойност на сложността на алгоритъма "в най-добрия" и "най-лошото", т.е. (+ Eff_best Eff_worst) / 2.
Сортиране само чрез вмъкване
Най-лесният начин да се справи 2 Имената на алгоритмите ние следваме Кнут. което идва на ум - това подреждане на данни, тъй като те станат достъпни. В този случай, при въвеждане на всяка нова стойност може да се основава на факта, че всички предишни елементи вече формират подредени последователност.
- Първият елемент да пише "без колебание".
- До края на последователността на въвеждане на данните за всеки нов компонент от него за изпълнение на следните стъпки:
- считано от края на съществуваща подреден последователност, всички негови елементи, които са по-големи от нововъведената елемент да се движат една стъпка назад;
- запишете нов елемент за място.
В същото време, разбира се, можете да прочетете всички входни елементи в същото време, да ги напиша в масив, а след това "да си представите", че всеки следващ елемент е въведена точно това. На характера и структурата на алгоритъма не е засегната.
Изпълнението на PrVst на алгоритъм