Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[C]Porównanie algorytmów sortujących - jak napisać?

#1
[C]Porównanie algorytmów sortujących - jak napisać?
Witam mam takowy programik to napisania:

Cytat:Porównanie algorytmów sortujących
Program ma umożliwiać porównanie co najmniej 3 różnych algorytmów sortujących zaimplementowanych na listach jednokierunkowych w tym algorytm QuickSort. Zamiana elementów musi być realizowana przez zamianę wskaźników. Porównywane wartości to ilość zamian i ilość porównań wykonywana przez każdy z algorytmów. Dane do sortowania powinny być wczytywane z pliku, a posortowane zapisywane do pliku. Nazwy plików podaje użytkownik, w czasie działania programu lub jako jego parametry.

niby nie taki trudny, na tablicach dał bym rade go zrobić, ale jak go zrobić na listach to nie mam zielonego pojęcia...

algorytmy są dowolne, z tym ze musi być tez QuickSort, a wszystko musi być napisane w C (nie w C++), no i na tych głupich listach jednokierunkowych...

Proszę się bezwzględnie zapoznać z obowiązującymi tutaj zasadami
Amandi


Z góry dzięki za pomocWesoły Piwko2
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#2
RE: [C]Porównanie algorytmów sortujących - jak napisać?
Tablica jednokierunkowa, to zwykły zbiornik, coś jak tablica...
Jej idea polega na tym, że mając pierwszy element, możemy uzyskiwać kolejne elementy...

Do listy możesz użyć jakiejś gotowej biblioteki, w C++ była by to klasa "list", w C nie wiem jak to wygląda...

Ewentualnie możesz napisać swój algorytm pracujący przy listach, jak już powiedziałem każdy element listy przechowuje adres kolejnego elementu(bo to lista jednokierunkowa; dwukierunkowa, przechowywałaby adresy następnego i poprzedniego- dwa kierunki przewijania listy). Dla przykładu powiedzmy, że chcesz zrobić listę int'ów(typ może być dowolny), to element takiej listy może wyglądać tak:

Kod:
struct lista_int
{
  int wartosc;
  void* nastepny;
}

w takiej strukturze mamy pole wartosc, jest to wartość tego elementu, a nastepny to adres kolejnego elementu, czyli adres takiej kolejnej struktury, dzięki odwołaniom do kolejnych elementów tworzy nam się lista którą możemy przeglądać w jednym kierunku, bo przecież nie mamy adresu poprzedniego elementu, dlatego możemy odczytywać tylko kolejne wartości


EDIT: a wątek był o sortowaniu, więc mając taką listę, musisz porobić odpowiednie funkcje, które będą zwracały wartości elementów według indeksu, funkcje które będą zamieniać kolejnościami elementy, wszystko to będą odpowiednie operacje na adresach w tych strukturach listy, mając takie funkcje można robić sortowania, innymi masa roboty...

Jednak na twoim miejscu lepiej skorzystać z jakiejś biblioteki, która oferuje już różne funkcje(metody), do operacji na liście i sortować odpowiednio używając tych funckji
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: [C]Porównanie algorytmów sortujących - jak napisać?
ok... coś tam jest....

ale teraz kto mi powie co w tym algorytmie jest nie tak??

Cytat:ADRES bubble(ADRES pierwszy)
{
int i,j,licz=0;
for(i=0;i<rozmiar-1;i++)
for(j=1;j<rozmiar;j++)
{printf("[ %d , %d ] \n",i,j);
while(licz!=rozmiar)
{
tab[licz]=pierwszy;
pierwszy=pierwszy->nast;
licz++;
}
licz=0;
if(strcmp(tab[j-1]->dane,tab[j]->dane)>0)
{
if(j==1)
{
tab[j-1]->nast=tab[j+1];
tab[j]->nast=tab[j-1];
pierwszy=tab[j];
}
else if(j==rozmiar)
{
tab[j-2]->nast=tab[j];
tab[j-1]->nast=0;
tab[j]->nast=tab[j-1];
pierwszy=tab[0];
}
else
{
tab[j-2]->nast=tab[j];
tab[j-1]->nast=tab[j+1];
tab[j]->nast=tab[j-1];
pierwszy=tab[0];
}
printf("%s | %s | %s | %s | %s | %s |\n",pierwszy,pierwszy->nast,pierwszy->nast->nast,pierwszy->nast->nast->nast,pierwszy->nast->nast->nast->nast,pierwszy->nast->nast->nast->nast->nast); system("PAUSE");
}
}
return pierwszy;
}

chodzi oto ze pierwsza "runda" porównywania idzie ok, program przelatuje przez te elementy kolejno porównując zamienia miejscami jak trzeba i jest ok wypisuje ruchy [0 , 1] [0 , 2] itd. [i , j], ale jak dochodzi do rundy drugiej starcia czyli jak wskazuje [ 1, 1] na liczniku to sie wyłącza... to jakaś duperela musi być ale nie moge się dopatrzeć...Kwaśny
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
algorytm jak napisać listporównanie algorytmów sortującychporównywanie list jednokierunkowych c

Podobne wątki ([C]Porównanie algorytmów sortujących - jak napisać?)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Początki z bashem - jak napisać skrypty: wysłanie maila i kalkulator? Kristov81 4 14137 21.03.2018, 18:32
Ostatni post: Szachista
  Jak napisać program typu konsola poleceń? toslaw1 6 8859 29.06.2017, 18:58
Ostatni post: toslaw1
  czy w java można napisać dowolny program ? anders33 7 9739 04.04.2017, 22:03
Ostatni post: koneton

Skocz do:


Wybrane wątki ([C]Porównanie algorytmów sortujących - jak napisać?)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Nauka do Olimpiady Informatycznej? piotr0905 1 4860 08.06.2019 16:50
Ostatni post: wlisik
Ściana Prosta gra w Builder C++ Kiranek1 1 4797 31.05.2019 15:20
Ostatni post: Szachista
  Menu (Nie widoczne długie opisy) wanhelsing 5 6575 28.04.2019 19:31
Ostatni post: koneton
  Skrypt usuwający pliki sylwiaa1 2 2902 28.04.2019 15:20
Ostatni post: sylwiaa1
  Środowisko do assemblera Physicist 4 6212 21.04.2019 14:04
Ostatni post: Ajgor
  VBA excel dmjs 6 6558 17.04.2019 10:20
Ostatni post: ptrick
  C++ - sens pogłębiania nauki gbr 5 7030 25.03.2019 12:53
Ostatni post: koneton
  Klasa wewnętrzna w C++ Physicist 4 6745 23.03.2019 18:28
Ostatni post: Physicist
  Ruby on Rails - tutoriale luciussulla 0 5927 23.03.2019 16:49
Ostatni post: luciussulla
Big Grin Czy dostane sie technikum informatycznego klaudiusz20046 6 9012 21.03.2019 01:28
Ostatni post: UnableToSee
  [C#] Program do moderacji czatów gier wiktrom12 0 6305 07.03.2019 15:33
Ostatni post: wiktrom12
  Mój pierwszy projekt - Pomoc rafal12999 1 6805 07.02.2019 22:01
Ostatni post: Szachista
  pomoc projekt scilab piesel18 2 8116 04.02.2019 09:03
Ostatni post: piesel18
  Szkoła Informatyczna Zikinan 1 7026 02.02.2019 17:59
Ostatni post: wojownikhaha
  [Java] Strona z zadaniami do rozwiązania i odpowiedziami rafal12999 2 7735 27.01.2019 13:44
Ostatni post: rafal12999