Sortowanie przez wstawianie
Lekcja 14 z 26 w kursie Tablice w C++ w Coddy.
Sortowanie przez wstawianie to również rodzaj techniki sortowania o złożoności czasowej O(n2), ale jest nieco bardziej zoptymalizowane niż sortowanie bąbelkowe.
W tym algorytmie tablica jest podzielona na dwie części. Jedna jest posortowana, a druga nieposortowana. Wybieramy element z nieposortowanej tablicy i umieszczamy go w posortowanej tablicy na właściwej pozycji.
Powtarzamy ten proces, aż wszystkie elementy zostaną posortowane.
1. Załóżmy, że mamy tablicę {8,4,1,5}. Uznajmy pierwszy element za posortowany, a wszystkie pozostałe za nieposortowane. Początkowo za posortowany uznawany jest element o indeksie 0.
2. Utwórz zmienną tymczasową i umieść w niej element o indeksie (i) (w tym przypadku jest to 4). Porównaj zmienną tymczasową z aktualnie posortowaną tablicą, która w tej chwili zawiera 8. Ponieważ 4<8, przesuń posortowaną tablicę w prawo, aż 4 znajdzie się na właściwej pozycji. W tym przypadku 8 trzeba przesunąć jeden raz. Teraz długość posortowanej tablicy wynosi 2.
3. Powtarzamy proces, aż cała tablica zostanie posortowana.
for(int i=1;i<n;i++){ //zacznij od pierwszego elementu, ponieważ uznajemy element o indeksie 0 za posortowany
int temp=arr[i];
int j=i-1; //aby sprawdzić wszystkie elementy po jego lewej stronie
while(arr[j]>temp && j>=0){ //przesuwaj elementy, dopóki są większe od temp, aż do pierwszego elementu
arr[j+1]=arr[j]; //przesuń element o jedną pozycję w prawo
j--;
}
arr[j+1]=temp; //umieść temp we właściwym miejscu
}
Aby zobaczyć wizualizację sortowania przez wstawianie
Wizualizacja sortowania przez wstawianie
Wyzwanie
Mając daną tablicę, posortuj ją za pomocą sortowania przez wstawianie i sprawdź, czy zaktualizowana tablica jest ciągiem arytmetycznym. Zwróć true, jeśli tak, w przeciwnym razie zwróć false.
Ciąg arytmetyczny to ciąg, w którym różnica między kolejnymi elementami jest stała.
przykład. 10,20,30,40,...
Spróbuj swoich sił
#include<iostream>
#include<vector>
using namespace std;
bool AP(vector<int>arr, int n){
//Code here
}Wszystkie lekcje w sekcji Tablice w C++
Poćwicz samodzielnie: Kompilator C++ online