Co to jest sortowanie przez wstawianie w C?
Metoda sortowania zwana sortowaniem przez wstawianie dopasowuje każdy pojedynczy element do sąsiednich podczas iteracji w tablicy. Mniejszy element niż poprzedni jest wstawiany do posortowanej podtablicy w odpowiednim miejscu.
Aby dokładniej zilustrować, zademonstrowałem przykład, w którym rozważałem tablicę czterech elementów w tablicy, takiej jak tablica[]= {5, 4, 60, 9} i chcemy posortować ten element rosnąco za pomocą sortowania przez wstawianie. Następujące interakcje wyjaśniają całkowity przebieg próbny sortowania przez wstawianie:
Iteracja 1
5 | 4 | 60 | 9 |
Mamy teraz tablicę jako arr [5, 4, 60, 9], w pierwszej iteracji sortowania przez wstawianie najpierw porównujemy pierwsze dwa elementy, takie jak 5 i 4, Ponieważ arr [5] to > arr [4], więc zamieniamy je, aby posortować tablicę w porządku rosnącym. Teraz tablica będzie:
4 | 5 | 60 | 9 |
Iteracja 2
4 | 5 | 60 | 9 |
W drugiej iteracji porównujemy kolejne dwa elementy, takie jak arr[5] z arr[60].
Ponieważ arr [5] < arr [60], więc zamiana nie następuje, ponieważ jest już posortowana w porządku rosnącym. Teraz tablica staje się:
4 | 5 | 60 | 9 |
Iteracja 3
4 | 5 | 60 | 9 |
Podobnie jak w trzeciej iteracji, dopasowujemy trzeci i czwarty element, na przykład arr[60] z arr[9].
Teraz widzimy, że arr[60] > arr[9] następuje zamiana, a następnie tablica zostanie posortowana w porządku rosnącym.
4 | 5 | 9 | 60 |
W ten sposób sortowanie przez wstawianie działa w C, które łatwo sortuje element tablicy w porządku rosnącym lub malejącym.
Schemat blokowy sortowania przez wstawianie
Poniżej przedstawiono schemat blokowy algorytmu sortowania przez wstawianie:
Implementacja przykładu sortowania przez wstawianie w C
Najpierw potrzebujemy zbioru elementów, które należy posortować malejąco i rosnąco, aby zbudować metodę sortowania przez wstawianie w C. Załóżmy na potrzeby tego przykładu, że mamy do czynienia z tablicą liczb {5, 4, 60, 9} :
#includepróżnia sortowanie_wstawiania_rosnące ( int arr1 [ ] , int N ) {
int I , J , mój klucz ;
Pętla //for służy do iteracji wartości i od 1 do i
Do ( I = 1 ; I < N ; I ++ ) {
mój klucz = arr1 [ I ] ;
J = I - 1 ;
chwila ( J >= 0 && arr1 [ J ] > mój klucz ) {
arr1 [ J + 1 ] = arr1 [ J ] ;
J = J - 1 ;
}
arr1 [ J + 1 ] = mój klucz ;
}
}
próżnia sortowanie_wstawiania_malejące ( int arr2 [ ] , int M ) {
int I , J , mój klucz ;
// tworzona jest kolejna pętla for w celu iteracji wartości i od 1 do i
Do ( I = 1 ; I < M ; I ++ ) {
mój klucz = arr2 [ I ] ;
J = I - 1 ;
chwila ( J >= 0 && arr2 [ J ] < mój klucz ) {
arr2 [ J + 1 ] = arr2 [ J ] ;
J = J - 1 ;
}
arr2 [ J + 1 ] = mój klucz ;
}
}
int główny ( ) {
// Sortowanie przez wstawianie w kolejności malejącej
int mój_arr [ ] = { 5 , 4 , 60 , 9 } ; // zainicjuj my_arr[] mający cztery wartości
int M = rozmiar ( mój_arr ) / rozmiar ( mój_arr [ 0 ] ) ;
sortowanie_wstawiania_malejące ( mój_arr , M ) ;
drukujf ( 'Tablica posortowana malejąco: ' ) ;
Do ( int I = 0 ; I < M ; I ++ )
drukujf ( '%D ' , mój_arr [ I ] ) ;
drukujf ( ' \N ' ) ;
// Sortowanie przez wstawianie w porządku rosnącym
int N = rozmiar ( mój_arr ) / rozmiar ( mój_arr [ 0 ] ) ;
sortowanie_wstawiania_rosnące ( arr2 , N ) ;
drukujf ( 'Posortowana tablica w porządku rosnącym: ' ) ;
Do ( int I = 0 ; I < N ; I ++ )
drukujf ( '%D ' , mój_arr [ I ] ) ;
drukujf ( ' \N ' ) ;
powrót 0 ;
}
W tym kodzie dwie metody sortowanie wstawiania_malejąco() , I sortowanie wstawiania_rosnąco() weź wartości tablicowe mój_arr[] . Kod następnie używa a dla pętli iterować po elementach tablicy.
Obie funkcje wywołujemy w funkcji main po posortowaniu tablic w porządku malejącym i rosnącym. Następnie pętle for są używane do drukowania posortowanej tablicy.
Gdy uruchomimy ten program, oczekiwane dane wyjściowe zostaną umieszczone poniżej:
Wniosek
Sortowanie przez wstawianie to szybki i łatwy sposób sortowania tablicy w kolejności malejącej lub rosnącej. W przypadku małych zestawów danych ta technika sortowania sprawdza się dobrze. Jak widać w powyższym przewodniku, łatwo jest zaimplementować przykładowy program w C, aby łatwo zrozumieć sortowanie przez wstawianie zarówno w porządku malejącym, jak i rosnącym.