Wpis z mikrobloga

#naukaprogramowania
#programowanie
#informatyka
Czy umiałby ktoś przerobić (albo coś podpowiedzieć) mój program sortowanie bąbelkowego na sortowanie przez wybór tak jak jest w poleceniu którego nie do końca rozumiem. W komentarzu wrzucam mój program. Jeśli przerobienie go w sensowny sposób jest niemożliwe to czy mógłby mnie ktoś nakierować na właściwą ścieżkę? Z góry dziękuję
randomm13 - #naukaprogramowania
#programowanie
#informatyka
Czy umiałby ktoś przer...

źródło: comment_1586983689dtBSg7Eq4iguni0aFx3Wxt.jpg

Pobierz
  • 8
  • Odpowiedz
@randomm13: Iterując po kolejnych elementach tablicy, powinieneś znaleźć minimalny element w zakresie od i do końca, a następnie zrobić swap pomiędzy znalezionym elementem, a elementem pod indeksem i.
W pseudokodzie będzie to mniej więcej coś takiego:
for(int i = 0; i < n; i++)
int minIndex = GetMinIndex(arr, i, n);
Swap(arr, i, minIndex);

GetMinIndex(int[] arr, int start, int n)
{
int minIndex = start;
for(int i = start + 1; i
  • Odpowiedz
@randomm13: Bubble sort to zupełnie inny algorytm niż selection, więc przerabianie istniejącej funkcji niewiele da. Możesz użyć swojego programu jako bazy do wprowadzania liczb do wektora i napisać pod bubblesort funkcje SelectionSort, a następnie wywoływać ją z maina zamiast bubblesort
  • Odpowiedz
@venitari: ok dzięki za informację. Wiesz może jeszcze jak zrobić aby program wypisywał kolejne kroki? Możesz podać na przykładzie tego co wrzuciłem, zależy mi tylko na tym aby wiedzieć mniej więcej jak to działa
  • Odpowiedz
@randomm13: W treści zadania pojedynczym krokiem jest swap elementu na bieżącym indeksie z minimalnym elementem od bieżącego indeksu do końca tablicy. Czyli wypisanie powinno nastąpić po wywołaniu metody swap. Jeśli chodzi o sam print, widzę, że masz to już zrobione w metodzie main zaczynajac od 25 linijki. Możesz wydzielić to do oddzielnej metody i wywoływać ją po swapie.
  • Odpowiedz
@randomm13: o ile swap robi to co myślę, to jedyne co zmień to wpierw przeiteruj tablice by znaleźć najmniejszy element. Potrzebna Ci zagnieżdżona pętla choć inne sposoby też są pewnie możliwe. W jednej iterujesz o i -0 do v.size a w drugiej j = i do i.size. W tej drugiej szukasz najmniejszego elementu i zapisujesz jego index do zmiennej pomocnicznej. Jak skończy się pętelka z j, to następnie robisz swap na
  • Odpowiedz