Wpis z mikrobloga

Mógłby mi ktoś pomóc?
Nie potrafię tego zrobić, a potrzebuje mieć to dobrze zrobione, najlepiej chyba bubblesortem...

Zadanie:
Dane N =
{( 4,7, -1, 0)
(12,9,-5,8)
(12,8,3,9)
(2,7,10,3)}

1 i 3 linijke ---> rosnąco
2 i 4 linijke ---> malejaco

Zad 2. Rozrysować dzialanie algorytmu...
Chciałabym się tego nauczyc ale za nic nie moge tego zrozumiec, mialam to na 1 kolosie i wiem, ze najlepiej byloby to rozwiazac petla for i bubblesort (w sensie najlepiej dla mojego zrozumienia xD)
Płacę w lajkach! =D

#programowanie #programista15k #informatyka #studbaza #studia #pomocy
  • 16
@Kris10: ale jajca xDDD
na wykopku sami programisci 15k, beka jak ktoś nie rozumie zadania, jest poczatkujacy i prosi kogoś o pomoc, żeby móc sobie przeanalizować i nauczyć się od podstaw, beka xDD
@kakuter: nie umiem tego tak zastosować, żeby jedna linijka była sortowana tak, druga tak. Nie wiem jak mam to zrobic, zawsze robiłam po prostu sortowanie jednej tablicy od tak
@emikognp: ale przecież rozumiesz zadanie i nawet napisałaś rozwiązanie, implementację bubble sorta znajdziesz w internecie, a pętle for chyba potrafisz pisać, to z kąkuterem się zastanawiamy w czym problem?
@emikognp:

List> input; // lista list czyli nasze dane

for(var int i = 0; i < input.Length; i++) // iterujemy się dla każdej listy
{
if(i % 2 == 0) {
// sortujemy rosnąco
bubbleSort(input[i], true) // true rosnąco
} else
// sortujemy malejąco
bubbleSort(input[i], false) // false malejąco
}

}

void bubbleSort(List array, bool ascending)
{
// TODO:
}
@emikognp: i w zależnośći od flagi ascending masz inny warunek w bubble sort

dla true masz

if (arr[j] > arr[j+1])
swap(&arr[j], &arr[j+1]);

a dla false
if (arr[j] < arr[j+1])
swap(&arr[j], &arr[j+1]);
@emikognp A więc musisz zrobić albo dwie funkcje sortowania- jedna rosnąca druga malejąco, albo w jednej funkcji zawrzeć ifa.

Indeks tablicy jest parzysty jeśli reszta z dzielenia przez 2 (modulo 2) wynosi 0. Kod wygląda tak jak Kris napisał
@Kris10: czyli jakby dał teraz, ze pierwsze dwie posortowane rosnaco, a drugie malejaco to wystarczy:
if((i==0) && (i==1))
void bubblerosnaco
else if((i==2)&& (i==3))
void bubble
malejaco

mozna byłoby tak zrobić?
@emikognp: teraz to nigdy nie wejdzie do ifa, bo masz operator &&, a i nigdy nie będzie jednocześnie 0 i 1, jakby było lub || to rozwiązanie też nie jest idealne, bo działa tylko dla 4 linijek, a jakby było 1000 to 1000 ifow trzeba było by napisać
@emikognp: lepiej użyć modulo i zrobić i%4== 0 || i%4==1 dla rosnących i w drugim ifie i%4==2 || i%4==3 dla malejących, przy takich warunkach można nawet odpalić dla 100000 linijek i będzie działać