Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [c++] Sortowanie Przez Zliczanie - Problem
djbarca
post
Post #1





Grupa: Zarejestrowani
Postów: 231
Pomógł: 1
Dołączył: 22.04.2007
Skąd: Rypin

Ostrzeżenie: (0%)
-----


  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <time.h>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. const int N = 80;
  10. const int KMIN = 0;
  11. const int KMAX = 26;
  12.  
  13. struct
  14. {
  15. unsigned klucz;
  16. char wyraz[3];
  17. } d[N],b[N];
  18.  
  19. unsigned L[KMAX - KMIN + 1];
  20. int i,j,v;
  21.  
  22. cout << " Sortowanie Przez Zliczanie\n"
  23. "------------------------------\n"
  24. " (C)2005 mgr Jerzy Walaszek\n\n"
  25. "Przed sortowaniem:\n\n";
  26.  
  27. // Generujemy losowe elementy do sortowania oraz ich klucze
  28.  
  29. srand((unsigned)time(NULL));
  30.  
  31. for(i = 0; i < N; i++)
  32. {
  33. for(j = 0; j < 3; j++) d[i].wyraz[j] = 65 + rand() % 3;
  34. d[i].klucz = 0;
  35. v = 1;
  36. for(j = 2; j >= 0; j--)
  37. {
  38. d[i].klucz += v * (d[i].wyraz[j] - 65);
  39. v *= 3;
  40. }
  41. }
  42.  
  43. // Wyświetlamy wygenerowane elementy
  44.  
  45. for(i = 0; i < N; i++)
  46. cout << ' ' << d[i].wyraz[0] << d[i].wyraz[1] << d[i].wyraz[2];
  47. cout << endl;
  48.  
  49. // Zerujemy liczniki
  50.  
  51. for(i = KMIN; i <= KMAX; i++) L[i - KMIN] = 0;
  52.  
  53. // Zliczamy wystąpienia kluczy
  54.  
  55. for(i = 0; i < N; i++) L[d[i].klucz - KMIN]++;
  56.  
  57. // Obliczamy pozycje końcowe elementów
  58.  
  59. for(i = KMIN + 1; i <= KMAX; i++) L[i - KMIN] += L[i - KMIN - 1];
  60.  
  61. // Przepisujemy elementy z d[ ] do b[ ]
  62.  
  63. for(i = N - 1; i >= 0; i--) b[(L[d[i].klucz - KMIN]--) - 1] = d[i];
  64.  
  65. // Wyświetlamy wyniki w b[ ]
  66.  
  67. cout << "Po sortowaniu:\n\n";
  68. for(i = 0; i < N; i++)
  69. cout << ' ' << b[i].wyraz[0] << b[i].wyraz[1] << b[i].wyraz[2];
  70. cout << endl;
  71. return 0;
  72. }



witam. mam pewien problem (po częsci z wykładowcą) .. mam takie oto sortowanie ze strony http://edu.i-lo.tarnow.pl .i moj problem jest jest taki troche nietypowy, mianowicie musze odkryc jaka idea kryje sie pod ta linijka:

for(i = KMIN + 1; i <= KMAX; i++) L[i - KMIN] += L[i - KMIN - 1];

.. nie chodzi mi o to do czego sluzy ta linijka , bo to wiem.. prosilbym o pomoc. Pozdrawiam (IMG:style_emoticons/default/smile.gif)

Ten post edytował djbarca 2.06.2011, 14:46:08
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kwiateusz
post
Post #2


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




jeśli poznasz zasade działania algorytmu to stanie sie to jasne, tu masz obrazkowo http://www.cse.iitk.ac.in/users/dsrkg/cs21...untingSort.html jak dobrze patrze to jest moment sumowania ile razy wystąpił dany element
Go to the top of the page
+Quote Post
djbarca
post
Post #3





Grupa: Zarejestrowani
Postów: 231
Pomógł: 1
Dołączył: 22.04.2007
Skąd: Rypin

Ostrzeżenie: (0%)
-----


No wlasnie w tym problem. Mamy takiego wykladowce, ktory pyta nie o to co robi dana linijka, tylko jaki jest sens tego ze ona tam jest. Opdowiedz jaka ty nasunales juz mowilem nie raz (IMG:style_emoticons/default/biggrin.gif) przeczytam zawartosc spod linku, moze tam znajde odpowiedz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 01:38