25.07.2017 Views

Intro-CSharp-Book-v2015

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

346 Въведение в програмирането със C#<br />

}<br />

return numbers;<br />

Това решение изглежда, че удовлетворява изискванията от задачата ни, но<br />

се досещаме, че може да го оптимизираме малко и вместо методът да<br />

приема като един аргумент числов масив, може да го декларираме, да<br />

приема произволен брой числови параметри.<br />

Това ще ни спести предварителното инициализиране на масив преди<br />

извикването на метода при по-малък брой числа за сортиране, а когато<br />

числата са по-голям брой, както видяхме в секцията за деклариране на<br />

метод с произволен брой аргументи, директно можем да подадем на<br />

метода инициализиран масив от числа, вместо да ги изброяваме като<br />

параметри на метода. Така първоначалната декларация на метода ни<br />

приема следния вид:<br />

static int[] Sort(params int[] numbers)<br />

{<br />

// The sorting logic comes here...<br />

}<br />

return numbers;<br />

Сега трябва да решим как да сортираме нашия масив. Един от най-лесните<br />

начини това да бъде направено е чрез така нареченият метод на пряката<br />

селекция (selection sort algorithm). При него масивът се разделя на<br />

сортирана и несортирана част. Сортираната част се намира в лявата част<br />

на масива, а несортираната – в дясната. При всяка стъпка на алгоритъма,<br />

сортираната част се разширява надясно с един елемент, а несортираната –<br />

намалява с един от ляво.<br />

Нека разгледаме паралелно с обясненията един пример. Нека имаме<br />

следния несортиран масив от числа:<br />

10 3 5 -1 0 12 8<br />

При всяка стъпка нашият алгоритъм трябва да намери минималния елемент<br />

в несортираната част на масива:<br />

10 3 5 -1 0 12 8<br />

min<br />

След това, трябва да размени намерения минимален елемент с първия<br />

елемент от несортираната част на масива:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!