Wat is invoegsortering in C?
De sorteermethode genaamd invoegsortering komt overeen met elk afzonderlijk element met aangrenzende elementen terwijl het door een array wordt herhaald. Een kleiner element dan het element voordat het op de juiste locatie in de gesorteerde subarray wordt ingevoegd.
Om dit verder te illustreren, heb ik een voorbeeld gedemonstreerd waarin ik een array van vier elementen in een array zoals arr[]= {5, 4, 60, 9} en we willen dit element in oplopende volgorde sorteren met behulp van invoegsortering. De volgende interacties verklaren de volledige droge run van invoegsortering:
Iteratie 1
5 | 4 | 60 | 9 |
We hebben nu een array als arr[5, 4, 60, 9], in de eerste iteratie van invoegsortering vergelijken we eerst de eerste twee elementen zoals 5 en 4, aangezien arr[5] > arr[4] is, dus we wisselen ze om om de array in oplopende volgorde te sorteren. Nu wordt de array:
4 | 5 | 60 | 9 |
Iteratie 2
4 | 5 | 60 | 9 |
In de tweede iteratie vergelijken we de volgende twee elementen, zoals arr[5] met arr[60].
Omdat de arr[5] < arr[60] dus omwisselen niet gebeurt omdat het al in oplopende volgorde is gesorteerd. Nu wordt de array:
4 | 5 | 60 | 9 |
Iteratie 3
4 | 5 | 60 | 9 |
Net als in de derde iteratie matchen we de derde en vierde elementen zoals arr[60] met arr[9].
Nu zien we dat arr[60] > arr[9] dus verwisselen plaatsvindt, dan zal de array in oplopende volgorde sorteren.
4 | 5 | 9 | 60 |
Dit is hoe invoegsortering werkt in C, waardoor een array-element eenvoudig in oplopende of aflopende volgorde wordt gesorteerd.
Stroomschema van invoegsortering
Hieronder volgt het stroomschema van het algoritme van invoegsortering:
Implementatievoorbeeld van invoegsortering in C
We hebben eerst een verzameling elementen nodig die in aflopende en oplopende volgorde moeten worden gesorteerd om de invoegsorteermethode in C te bouwen. Neem voor de doeleinden van dit voorbeeld aan dat we te maken hebben met een reeks getallen {5, 4, 60, 9} :
#includeleegte insertionsort_ascending ( int arr1 [ ] , int N ) {
int i , J , mijn sleutel ;
//for lus wordt gebruikt om de i-waarden van 1 tot i
voor ( i = 1 ; i < N ; i ++ ) {
mijn sleutel = arr1 [ i ] ;
J = i - 1 ;
terwijl ( J >= 0 && arr1 [ J ] > mijn sleutel ) {
arr1 [ J + 1 ] = arr1 [ J ] ;
J = J - 1 ;
}
arr1 [ J + 1 ] = mijn sleutel ;
}
}
leegte insertionsort_descending ( int arr2 [ ] , int M ) {
int i , J , mijn sleutel ;
// er wordt nog een for-lus gemaakt om de i-waarden van 1 tot i
voor ( i = 1 ; i < M ; i ++ ) {
mijn sleutel = arr2 [ i ] ;
J = i - 1 ;
terwijl ( J >= 0 && arr2 [ J ] < mijn sleutel ) {
arr2 [ J + 1 ] = arr2 [ J ] ;
J = J - 1 ;
}
arr2 [ J + 1 ] = mijn sleutel ;
}
}
int voornaamst ( ) {
//Insertion-Sort met aflopende volgorde
int mijn_arr [ ] = { 5 , 4 , 60 , 9 } ; // initialiseer een my_arr [] met vier waarden
int M = De grootte van ( mijn_arr ) / De grootte van ( mijn_arr [ 0 ] ) ;
insertionsort_descending ( mijn_arr , M ) ;
printf ( 'Gesorteerde array in aflopende volgorde: ' ) ;
voor ( int i = 0 ; i < M ; i ++ )
printf ( '%D ' , mijn_arr [ i ] ) ;
printf ( ' \N ' ) ;
//Insertion-Sorteren in oplopende volgorde
int N = De grootte van ( mijn_arr ) / De grootte van ( mijn_arr [ 0 ] ) ;
insertionsort_ascending ( arr2 , N ) ;
printf ( 'Gesorteerde array in oplopende volgorde: ' ) ;
voor ( int i = 0 ; i < N ; i ++ )
printf ( '%D ' , mijn_arr [ i ] ) ;
printf ( ' \N ' ) ;
opbrengst 0 ;
}
In deze code twee methoden insertionsort_descending() , En insertionsort_ascending() neem de matrixwaarden van mijn_arr[] . De code gebruikt dan een for loop om door de elementen van de array te itereren.
We noemen beide functies in de hoofdfunctie zodra ze de arrays in aflopende en oplopende volgorde hebben gesorteerd. Daarna worden de for-lussen gebruikt om de gesorteerde array af te drukken.
Wanneer we dit programma uitvoeren, wordt de verwachte uitvoer hieronder geplaatst:
Conclusie
De invoegsortering is een snelle en gemakkelijke manier om een array in aflopende of oplopende volgorde te sorteren. Voor kleine datasets presteert deze sorteertechniek goed. Zoals u in de bovenstaande gids kunt zien, is het eenvoudig om een voorbeeld van een C-programma te implementeren om invoegsortering gemakkelijk te begrijpen, zowel in aflopende als in oplopende volgorde.