В този урок ще приложим алгоритъма за сортиране на селекцията в Python. Това е доста лесен алгоритъм, използващ по-малко размяна.
В този алгоритъм избираме най-малкия елемент от несортиран масив при всяко преминаване и го разменяме с началото на несортирания масив. Този процес ще продължи, докато всички елементи не бъдат поставени на правилното място. Той е прост и алгоритъм за сортиране на сравнение на място.
Работа на Selection Sort
Следват стъпките за обяснение на работата на сортирането на селекция в Python.
Нека вземем несортиран масив, за да приложим алгоритъма за сортиране по избор.
преименуване на директория linux
[30, 10, 12, 8, 15, 1]
Етап 1: Вземете дължината на масива.
java програмиране на прости числа
дължина = len(масив) → 6
Стъпка 2: Първо задаваме първия елемент като минимален елемент.
Стъпка - 3: Сега сравнете минимума с втория елемент. Ако вторият елемент е по-малък от първия, ние го присвояваме като минимум.
Отново сравняваме втория елемент с третия и ако третият елемент е по-малък от втория, го присвояваме като минимум. Този процес продължава, докато не намерим последния елемент.
списък срещу набор в java
Стъпка - 4: След всяка итерация минималният елемент се разменя пред несортирания масив.
Стъпка - 5: Втората до третата стъпка се повтарят, докато получим сортирания масив.
Алгоритъм за сортиране на селекция
Алгоритъмът за сортиране на селекцията е както следва.
Алгоритъм
програма за двуизмерен масив в c
selection_sort(array) repeat (0, length - 1) times set the first unsorted element as the minimum for each of the unsorted elements if element <currentminimum set element as new minimum swap with first unsorted position end selection_sort < pre> <h2>Selection Sort Program using Python</h2> <p>The following code snippet shows the selection sort algorithm implementation using Python.</p> <p> <strong>Code -</strong> </p> <pre> def selection_sort(array): length = len(array) for i in range(length-1): minIndex = i for j in range(i+1, length): if array[j] <array[minindex]: minindex="j" array[i], array[minindex]="array[minIndex]," array[i] return array print('the sorted is: ', selection_sort(array)) < pre> <p> <strong>Output:</strong> </p> <pre> The sorted array is: [3, 6, 9, 21, 33] </pre> <p> <strong>Explanation -</strong> </p> <p>Let's understand the above code -</p> <ul> <li>First, we define the <strong>selection_sort()</strong> function that takes array as an argument.</li> <li>In the function, we get the length of the array which used to determine the number of passes to be made comparing values.</li> <li>As we can see that, we use two loops - outer and inner loop. The outer loop uses to iterate through the values of the list. This loop will iterate to 0 to (length-1). So the first iteration will be perform (5-1) or 4 times. In each iteration, the value of the variable i is assigned to the variable</li> <li>The inner loop uses to compare the each value of right-side element to the other value on the leftmost element. So the second loop starts its iteration from i+1. It will only pick the value that is unsorted.</li> <li>Find the minimum element in the unsorted list and update the minIndex position.</li> <li>Place the value at the beginning of the array.</li> <li>Once the iteration is completed, the sorted array is returned.</li> <li>At last we create an unsorted array and pass to the <strong>selection_sort()</strong> It prints the sorted array.</li> </ul> <h2>Time Complexity of Selection Sort</h2> <p>Time complexity is an essential in term of how much time an algorithm take to sort it. In the selection sort, there are two loops. The outer loop runs for the n times (n is a total number of element).</p> <p>The inner loop is also executed for n times. It compares the rest of the value to outer loop value. So, there is n*n times of execution. Hence the time complexity of merge sort algorithm is O(n<sup>2</sup>).</p> <p>The time complexity can be categorized into three categories.</p> <hr></array[minindex]:></pre></currentminimum>
Обяснение -
Нека разберем горния код -
- Първо, ние дефинираме сортиране_на_селекция() функция, която приема масив като аргумент.
- Във функцията получаваме дължината на масива, използван за определяне на броя преминавания, които трябва да бъдат направени при сравняване на стойности.
- Както виждаме, използваме два цикъла - външен и вътрешен. Външният цикъл се използва за итерация през стойностите на списъка. Този цикъл ще повтори от 0 до (дължина-1). Така че първата итерация ще бъде изпълнена (5-1) или 4 пъти. Във всяка итерация стойността на променливата i се присвоява на променливата
- Вътрешният цикъл използва за сравняване на всяка стойност на десния елемент с другата стойност на най-левия елемент. Така че вторият цикъл започва своята итерация от i+1. Той ще избере само стойността, която не е сортирана.
- Намерете минималния елемент в несортирания списък и актуализирайте позицията minIndex.
- Поставете стойността в началото на масива.
- След като итерацията приключи, сортираният масив се връща.
- Най-накрая създаваме несортиран масив и преминаваме към сортиране_на_селекция() Отпечатва сортирания масив.
Времева сложност на сортирането на селекцията
Времевата сложност е от съществено значение по отношение на това колко време отнема алгоритъмът, за да го сортира. При сортирането на селекцията има два цикъла. Външният цикъл се изпълнява n пъти (n е общ брой елементи).
Вътрешният цикъл също се изпълнява n пъти. Той сравнява останалата част от стойността със стойността на външния цикъл. Така че има n*n пъти на изпълнение. Следователно времевата сложност на алгоритъма за сортиране чрез сливане е O(n2).
Времевата сложност може да бъде категоризирана в три категории.