logo

Ievietošanas kārtošanas algoritms

Šajā rakstā mēs apspriedīsim ievietošanas kārtošanas algoritmu. Arī ievietošanas kārtošanas darba procedūra ir vienkārša. Šis raksts būs ļoti noderīgs un interesants studentiem, jo ​​eksāmenos viņi var saskarties ar ievietošanas veidu. Tāpēc ir svarīgi apspriest tēmu.

Ievietošanas kārtošana darbojas līdzīgi kā spēļu kāršu šķirošana rokās. Tiek pieņemts, ka pirmā karte jau ir sakārtota kāršu spēlē, un tad mēs izvēlamies nešķiroto karti. Ja izvēlētā nešķirotā karte ir lielāka par pirmo karti, tā tiks novietota labajā pusē; pretējā gadījumā tas tiks novietots kreisajā pusē. Tāpat visas nešķirotās kartītes tiek ņemtas un ievietotas precīzā vietā.

Tāda pati pieeja tiek izmantota ievietošanas kārtošanā. Ievietošanas kārtošanas ideja ir tāda, ka vispirms ņem vienu elementu un atkārto to caur sakārtoto masīvu. Lai gan tas ir vienkārši lietojams, tas nav piemērots lielām datu kopām, jo ​​ievietošanas kārtošanas laika sarežģītība vidējā un sliktākajā gadījumā ir O(n2) , kur n ir vienumu skaits. Ievietošanas kārtošana ir mazāk efektīva nekā citi kārtošanas algoritmi, piemēram, kaudzes kārtošana, ātrā kārtošana, sapludināšanas kārtošana utt.

Ievietošanas šķirošanai ir dažādas priekšrocības, piemēram,

  • Vienkārša ieviešana
  • Efektīva mazām datu kopām
  • Adaptīvs, t.i., tas ir piemērots datu kopām, kas jau ir būtiski sakārtotas.

Tagad apskatīsim ievietošanas kārtošanas algoritmu.

Algoritms

Vienkāršās ievietošanas kārtošanas sasniegšanas darbības ir norādītas šādi:

1. darbība — Ja elements ir pirmais elements, pieņemsim, ka tas jau ir sakārtots. Atgriešanās 1.

noņemiet npm kešatmiņu

2. darbība — Izvēlieties nākamo elementu un uzglabājiet to atsevišķi a taustiņu.

3. darbība - Tagad salīdziniet taustiņu ar visiem elementiem sakārtotajā masīvā.

4. darbība — Ja elements sakārtotajā masīvā ir mazāks par pašreizējo elementu, pārejiet uz nākamo elementu. Pretējā gadījumā pārvietojiet lielākus elementus masīvā pa labi.

5. darbība — Ievietojiet vērtību.

6. darbība — Atkārtojiet, līdz masīvs ir sakārtots.

Ievietošanas kārtošanas algoritma darbība

Tagad apskatīsim ievietošanas kārtošanas algoritma darbību.

Lai saprastu ievietošanas kārtošanas algoritma darbību, ņemsim nešķirotu masīvu. Ievietošanas kārtošanu būs vieglāk saprast, izmantojot piemēru.

Lai masīva elementi ir -

Ievietošanas kārtošanas algoritms

Sākotnēji pirmie divi elementi tiek salīdzināti ievietošanas kārtībā.

Ievietošanas kārtošanas algoritms

Šeit 31 ir lielāks par 12. Tas nozīmē, ka abi elementi jau ir augošā secībā. Tātad pagaidām 12 tiek glabāti sakārtotā apakšmasīvā.

Ievietošanas kārtošanas algoritms

Tagad pārejiet pie nākamajiem diviem elementiem un salīdziniet tos.

Ievietošanas kārtošanas algoritms

Šeit 25 ir mazāks par 31. Tātad 31 nav pareizā pozīcijā. Tagad samainiet 31 ar 25. Līdztekus maiņai ievietošanas kārtošana pārbaudīs to arī ar visiem elementiem sakārtotajā masīvā.

Pagaidām sakārtotajam masīvam ir tikai viens elements, t.i., 12. Tātad 25 ir lielāks par 12. Tādējādi sakārtotais masīvs paliek sakārtots arī pēc apmaiņas.

Ievietošanas kārtošanas algoritms

Tagad divi elementi sakārtotajā masīvā ir 12 un 25. Pārejiet uz nākamajiem elementiem, kas ir 31 un 8.

Ievietošanas kārtošanas algoritms

Gan 31, gan 8 nav sakārtoti. Tātad, nomainiet tos.

Ievietošanas kārtošanas algoritms

Pēc apmaiņas elementi 25 un 8 tiek nešķiroti.

Ievietošanas kārtošanas algoritms

Tātad, nomainiet tos.

Ievietošanas kārtošanas algoritms

Tagad elementi 12 un 8 ir nešķiroti.

Ievietošanas kārtošanas algoritms

Tātad, nomainiet arī tos.

Ievietošanas kārtošanas algoritms

Tagad sakārtotajā masīvā ir trīs vienumi, kas ir 8, 12 un 25. Pārejiet uz nākamajiem vienumiem, kas ir 31 un 32.

Ievietošanas kārtošanas algoritms

Tādējādi tie jau ir sakārtoti. Tagad sakārtotajā masīvā ir 8, 12, 25 un 31.

Ievietošanas kārtošanas algoritms

Pārejiet uz nākamajiem elementiem, kas ir 32 un 17.

Ievietošanas kārtošanas algoritms

17 ir mazāks par 32. Tātad, nomainiet tos.

Ievietošanas kārtošanas algoritms

Samaiņa padara 31 un 17 nešķirotas. Tātad, nomainiet arī tos.

Ievietošanas kārtošanas algoritms

Tagad, apmainot, 25 un 17 tiek nešķiroti. Tātad, veiciet maiņu vēlreiz.

Ievietošanas kārtošanas algoritms

Tagad masīvs ir pilnībā sakārtots.

Ievietošanas kārtošanas sarežģītība

Tagad apskatīsim ievietošanas kārtošanas laika sarežģītību labākajā gadījumā, vidējā gadījumā un sliktākajā gadījumā. Mēs redzēsim arī ievietošanas kārtošanas sarežģītību.

1. Laika sarežģītība

Lieta Laika sarežģītība
Labākais gadījums O(n)
Vidējais gadījums O(n2)
Sliktākajā gadījumā O(n2)
    Labākā gadījuma sarežģītība —Tas notiek, ja nav nepieciešama šķirošana, t.i., masīvs jau ir sakārtots. Vislabākā ievietošanas kārtošanas laika sarežģītība ir O(n) .Vidējā gadījuma sarežģītība —Tas notiek, ja masīva elementi ir sajauktā secībā, kas nav pareizi augoša un nepareizi dilstoša. Vidējā gadījuma laika sarežģītība ievietošanas kārtošanā ir O(n2) .Sliktākā gadījuma sarežģītība -Tas notiek, ja masīva elementi ir jākārto apgrieztā secībā. Tas nozīmē, ka jums ir jākārto masīva elementi augošā secībā, bet tā elementi ir dilstošā secībā. Sliktākā gadījuma laika sarežģītība ievietošanas kārtošanā ir O(n2) .

2. Telpas sarežģītība

Kosmosa sarežģītība O(1)
Stabils
  • Ievietošanas kārtošanas telpas sarežģītība ir O(1). Tas ir tāpēc, ka ievietošanas kārtošanā ir nepieciešams papildu mainīgais apmaiņai.

Ievietošanas kārtošanas ieviešana

Tagad apskatīsim ievietošanas programmu šķirošanu dažādās programmēšanas valodās.

Programma: Uzrakstiet programmu ievietošanas kārtošanai C valodā.

 #include void insert(int a[], int n) /* function to sort an aay with insertion sort */ { int i, j, temp; for (i = 1; i <n; i++) { temp="a[i];" j="i" - 1; while(j>=0 &amp;&amp; temp <= 17 a[j]) * move the elements greater than temp to one position ahead from their current position* { a[j+1]="a[j];" j="j-1;" } void printarr(int a[], int n) function print array i; for (i="0;" i < n; i++) printf('%d ', a[i]); main() a[]="{" 12, 31, 25, 8, 32, }; n="sizeof(a)" sizeof(a[0]); printf('before sorting are - 
'); printarr(a, n); insert(a, printf('
after return 0; pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-18.webp" alt="Insertion Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement insertion sort in python.</p> <pre> def insertionSort(a): # Function to implement insertion sort for i in range(1, len(a)): temp = a[i] # Move the elements greater than temp to one position #ahead from their current position j = i-1 while j &gt;= 0 and temp <a[j] : a[j + 1]="a[j]" j="j-1" def printarr(a): # function to print the array for i in range(len(a)): (a[i], end=" " ) a="[70," 15, 2, 51, 60] print('before sorting elements are - ') printarr(a) insertionsort(a) print('
after < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-19.webp" alt="Insertion Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement insertion sort in C++ language.</p> <pre> #include using namespace std; void insert(int a[], int n) /* function to sort an aay with insertion sort */ { int i, j, temp; for (i = 1; i <n; i++) { temp="a[i];" j="i" - 1; while(j>=0 &amp;&amp; temp <= 2 a[j]) * move the elements greater than temp to one position ahead from their current position* { a[j+1]="a[j];" j="j-1;" } void printarr(int a[], int n) function print array i; for (i="0;" i < n; i++) cout << a[i] <<' '; main() a[]="{" 89, 45, 35, 8, 12, }; n="sizeof(a)" sizeof(a[0]); cout<<'before sorting are - '<<endl; printarr(a, n); insert(a, cout<<'
after return 0; pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-20.webp" alt="Insertion Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement insertion sort in C# language.</p> <pre> using System; class Insertion { static void insert(int[] a) /* function to sort an aay with insertion sort */ { int i, j, temp; int n = a.Length; for (i = 1; i <n; i++) { temp="a[i];" j="i" - 1; while(j>=0 &amp;&amp; temp <= 12 a[j]) * move the elements greater than temp to one position ahead from their current position* { a[j+1]="a[j];" j="j-1;" } static void printarr(int[] a) function print array int i; n="a.Length;" for (i="0;" i < n; i++) console.write(a[i] + ' '); main() int[] a="{" 98, 54, 53, 18, 21, }; console.write('before sorting are - 
'); printarr(a); insert(a); console.write('
after pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-21.webp" alt="Insertion Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement insertion sort in Java.</p> <pre> public class Insert { void insert(int a[]) /* function to sort an aay with insertion sort */ { int i, j, temp; int n = a.length; for (i = 1; i <n; i++) { temp="a[i];" j="i" - 1; while(j>=0 &amp;&amp; temp <= 22 a[j]) * move the elements greater than temp to one position ahead from their current position* { a[j+1]="a[j];" j="j-1;" } void printarr(int a[]) function print array int i; n="a.length;" for (i="0;" i < n; i++) system.out.print(a[i] + ' '); public static main(string[] args) a[]="{" 92, 50, 5, 20, 11, }; insert i1="new" insert(); system.out.println('
before sorting are - i1.printarr(a); i1.insert(a); system.out.println('

after system.out.println(); pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-22.webp" alt="Insertion Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement insertion sort in PHP.</p> <pre> <?php $a = array( 92, 50, 5, 20, 11, 22 ); function printArray($a) { for($i = 0; $i < 6; $i++) { print_r($a[$i]); echo ' '; } } echo 'Before sorting array elements are - <br>&apos;; printArray($a); for ($i = 1; $i = 0 &amp;&amp; $temp <= $a[$j]) * move the elements greater than temp to one position ahead from their current position* { $a[$j+1]="$a[$j];" $j="$j-1;" } echo ' <br> After sorting array elements are - <br>&apos;; printArray($a); ?&gt; </=></pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-23.webp" alt="Insertion Sort Algorithm"> <p>So, that&apos;s all about the article. Hope the article will be helpful and informative to you.</p> <p>This article was not only limited to the algorithm. We have also discussed the algorithm&apos;s complexity, working, and implementation in different programming languages.</p> <hr></=></n;></pre></=></n;></pre></=></n;></pre></a[j]></pre></=></n;>

Izvade:

Ievietošanas kārtošanas algoritms

Tātad, tas viss par rakstu. Cerams, ka raksts jums būs noderīgs un informatīvs.

Šis raksts neaprobežojās tikai ar algoritmu. Mēs arī apspriedām algoritma sarežģītību, darbību un ieviešanu dažādās programmēšanas valodās.