V tej vadnici bomo implementirali algoritem razvrščanja izbire v Pythonu. To je precej preprost algoritem, ki uporablja manj zamenjav.
V tem algoritmu v vsakem prehodu izberemo najmanjši element iz nerazvrščene matrike in ga zamenjamo z začetkom nerazvrščene matrike. Ta postopek se bo nadaljeval, dokler vsi elementi niso postavljeni na pravo mesto. Je preprost in primerjalni algoritem za razvrščanje na mestu.
Delovanje izbirnega razvrščanja
Sledijo koraki za razlago delovanja razvrščanja Selection v Pythonu.
Vzemimo nerazvrščeno matriko, da uporabimo algoritem razvrščanja izbire.
[30, 10, 12, 8, 15, 1]
ukaz za namestitev npm
Korak 1: Dobite dolžino niza.
dolžina = len(niz) → 6
2. korak: Najprej nastavimo prvi element kot minimalni element.
3. korak: Zdaj primerjajte minimum z drugim elementom. Če je drugi element manjši od prvega, ga dodelimo kot minimum.
Spet primerjamo drugi element s tretjim in če je tretji element manjši od drugega, ga dodelimo kot minimum. Ta proces se nadaljuje, dokler ne najdemo zadnjega elementa.
4. korak: Po vsaki ponovitvi se najmanjši element zamenja pred nerazvrščeno matriko.
nfa primeri
5. korak: Drugi do tretji korak se ponavljajo, dokler ne dobimo razvrščenega polja.
Algoritem za razvrščanje izbire
Algoritem razvrščanja izbire je naslednji.
Algoritem
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>
Pojasnilo -
Razumejmo zgornjo kodo -
- Najprej definiramo izbor_razvrsti() funkcija, ki vzame polje kot argument.
- V funkciji dobimo dolžino matrike, ki je bila uporabljena za določitev števila prehodov, ki jih je treba opraviti pri primerjavi vrednosti.
- Kot lahko vidimo, uporabljamo dve zanki - zunanjo in notranjo zanko. Zunanja zanka se uporablja za ponavljanje vrednosti seznama. Ta zanka se bo ponavljala od 0 do (dolžina-1). Tako bo prva ponovitev izvedena (5-1) ali 4-krat. V vsaki ponovitvi je vrednost spremenljivke i dodeljena spremenljivki
- Notranja zanka se uporablja za primerjavo posamezne vrednosti elementa na desni strani z drugo vrednostjo na skrajno levem elementu. Torej druga zanka začne svojo iteracijo od i+1. Izbral bo samo vrednost, ki ni razvrščena.
- Poiščite najmanjši element na nerazvrščenem seznamu in posodobite položaj minIndex.
- Postavite vrednost na začetek matrike.
- Ko je ponovitev končana, se vrne razvrščena matrika.
- Končno ustvarimo nerazvrščeno matriko in preidemo na izbor_razvrsti() Natisne razvrščeno matriko.
Časovna kompleksnost izbirnega razvrščanja
Časovna zapletenost je bistvena glede na to, koliko časa algoritem potrebuje za razvrščanje. Pri razvrščanju izbire sta dve zanki. Zunanja zanka se izvede n-krat (n je skupno število elementov).
Tudi notranja zanka se izvede n-krat. Preostalo vrednost primerja z vrednostjo zunanje zanke. Izvršitev je torej n*n. Zato je časovna kompleksnost algoritma za razvrščanje z združevanjem O(n2).
Časovno zahtevnost lahko razvrstimo v tri kategorije.