Strefa wyzwań
Zaprezentowany kod jest implementacją algorytmu sortowania bąbelkowego. Program sortuje elementy tablicy nierosnąco. Zmodyfikuj go tak, aby sortował elementy tablicy niemalejąco.
Przetestuj swój program dla tablicy składającej się z następujących elementów: , , , , , , , , , .
Przykładowe rozwiązanie zadania:
#include<iostream>
using namespace std;
int main(){
int liczby[10] = {7,8,5,6,3,2,1,9,4,0};
int rozmiar = 10;
for (int j = 0; j < rozmiar - 1; j++) {
for (int i = 0; i < rozmiar - 1; i++) {
if (liczby[i] > liczby[i + 1]) {
int pom = liczby[i];
liczby[i] = liczby[i + 1];
liczby[i + 1] = pom;
}
}
}
for (int i = 0; i < rozmiar; i++) {
cout << liczby[i] << " ";
}
return 0;
}Zaprezentowany kod jest implementacją algorytmu sortowania bąbelkowego. Program do zamiany miejscami elementów tablicy wykorzystuje zmienną pomocniczą pom. Zaproponuj inny sposób zamiany elementów miejscami. Pamiętaj o niezbędnych bibliotekach.
Specyfikacja problemu:
Dane:
liczby– tablica liczb naturalnychrozmiar– rozmiar tablicy; liczba całkowita
Wynik:
liczby– tablica liczb naturalnych posortowana niemalejąco
Przykładowe rozwiązanie zadania:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int liczby[10] = {7,8,5,6,3,2,1,9,4,0};
int rozmiar = 10;
for (int j = 0; j < rozmiar - 1; j++) {
for (int i = 0; i < rozmiar - 1; i++) {
if (liczby[i] > liczby[i + 1]) {
swap(liczby[i], liczby[i+1]);
}
}
}
for (int i = 0; i < rozmiar; i++) {
if(i != rozmiar - 1)
cout << liczby[i] << " ";
else
cout << liczby[i];
}
return 0;
}W pewnej kręgielni zapisywano najlepsze dzienne wyniki. Po tygodniu przyszedł czas wyznaczenia rankingu graczy. Użyj sortowania bąbelkowego, aby wydrukować posortowaną rosnąco listę wyników. Użyj wersji zoptymalizowanej algorytmu.
Specyfikacja problemu:
Dane:
wyniki– tablica liczb naturalnychrozmiar– rozmiar tablicy; liczba całkowita
Wynik:
wyniki– tablica liczb naturalnych
Przykładowe rozwiązanie zadania:
#include <iostream>
using namespace std;
int main() {
int wyniki[7] = {
84,
102,
77,
121,
111,
190,
138
};
int rozmiar = 7;
bool czyZmiana = true;
for (int i = 0; i < rozmiar - 1; i++) {
czyZmiana = false;
for (int i = 0; i < rozmiar - 1; i++) {
if (wyniki[i] > wyniki[i + 1]) {
int temp = wyniki[i];
wyniki[i] = wyniki[i + 1];
wyniki[i + 1] = temp;
czyZmiana = true;
}
}
if (!czyZmiana) {
break;
}
}
for (int i = 0; i < rozmiar; i++) {
cout << wyniki[i] << endl;
}
return 0;
}