[ Príspevkov: 11 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 05.04.11
Prihlásený: 12.06.11
Príspevky: 5
Témy: 1 | 1
NapísalOffline : 05.04.2011 21:44 | Bubblesort, Quicksort

Zdravim, som v C novačik a chcel som sa spýtať ako mam spraviť aby algoritmus ako je bublesort a podobne jemu vypisali po triedeni čisiel dobu triedenia, popr. i počet iterací všetkych implementovaných algoritmov.
vkladam aj zdrojak na buble

Kód:
 
  #include<stdio.h> 
  #include<conio.h> 
 
  void bubble(int a[],int n) 
  { 
        int i,j,t; 
         for(i=n-2;i>=0;i--) 
         { 
            for(j=0;j<=i;j++) 
 
                  { 
                    if(a[j]>a[j+1]) 
                                    { 
                                      t=a[j]; 
                                     a[j]=a[j+1]; 
                                     a[j+1]=t; 
                                    } 
                   } 
         
 
           }//end for 1. 
 
  }//end function. 
 
 
  void main() 
  { 
 
      int a[100],n,i; 
 
      clrscr(); 
 
      printf("\n\n Enter integer value for total no.s of elements to be sorted: "); 
      scanf("%d",&n); 
 
      for( i=0;i<=n-1;i++) 
            { printf("\n\n Enter integer value for element no.%d : ",i+1); 
              scanf("%d",&a[i]); 
            } 
 
       bubble(a,n); 
 
       printf("\n\n Finally sorted array is: "); 
       for( i=0;i<=n-1;i++) 
       printf("%3d",a[i]); 
 
  }


Offline

Užívateľ
Užívateľ
Bubblesort, Quicksort

Registrovaný: 20.03.11
Prihlásený: 01.11.11
Príspevky: 27
Témy: 0 | 0
NapísalOffline : 05.04.2011 22:10 | Bubblesort, Quicksort

Neviem či som ťa správne pochopil...
Chceš funkcie pre výpis poľa, čas ako dlho sa pole triedilo atď. ?

Tu máš niečo k triediacim algoritmom...
http://www.algoritmy.net/article/3/Bubble-sort


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 05.04.11
Prihlásený: 12.06.11
Príspevky: 5
Témy: 1 | 1
Napísal autor témyOffline : 05.04.2011 22:14 | Bubblesort, Quicksort

Ano presne, čas ako sa pole dlho triedilo :). A ta stranka nejde


Offline

Užívateľ
Užívateľ
Bubblesort, Quicksort

Registrovaný: 19.09.09
Prihlásený: 12.09.13
Príspevky: 359
Témy: 55 | 55
Bydlisko: Rohožník
NapísalOffline : 09.04.2011 10:05 | Bubblesort, Quicksort

pouzi kniznicu time.h, potom v mane zadeklaruj: clock_t begin, end; flot time;
potom uz staci pred zavolanim funkcie zadat begin=clock() a za funkciou sort napis end=clock();

time = (float)(end - begin) / CLOCKS_PER_SEC;

a vypises uz iba ten time a mas dobu od zacatia po koniec triedenia v sekundách - podla toho si uz uprav formatovanie vystupu, ci chces aj desatiny a stotiny sekundy, ale tipujem, ze treba pouzit este mensie jednotky, pretože aj budes použivať relativne male pole, tak ten cas je strasne krátky :)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 05.04.11
Prihlásený: 12.06.11
Príspevky: 5
Témy: 1 | 1
Napísal autor témyOffline : 14.04.2011 0:25 | Bubblesort, Quicksort

Diki to pomohlo, vyskušam :)..a pojdeto aj na ostatne triediace programky keď to zadefinujem rovnako?


Offline

Užívateľ
Užívateľ
Bubblesort, Quicksort

Registrovaný: 19.09.09
Prihlásený: 12.09.13
Príspevky: 359
Témy: 55 | 55
Bydlisko: Rohožník
NapísalOffline : 14.04.2011 14:26 | Bubblesort, Quicksort

Ak mas viacero triediacich funkcii v jednom programe a chces vediet dobu kaydeho, tak to urob ta, ze v kaydej funkcii budes merat cas, cize v kazdej si zadeklarujes to, co som ti napisal a na konci to vypises, alebo na konci funkcie vratis dobu a tu vypises potom v maine.

Da sa to spravit hocijako ... :)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 05.04.11
Prihlásený: 12.06.11
Príspevky: 5
Témy: 1 | 1
Napísal autor témyOffline : 25.04.2011 21:11 | Bubblesort, Quicksort

No mam to takto

Kód:
#include<stdio.h>
#include<time.h>

int main(){
  int s,temp,i,j,a[100];
  clock_t begin, end;
  float time;

  printf("\nEnter size of the array: ");
  scanf("%d",&s);
  printf("\nEnter %d elements in to the array:",s);

  for(i=0;i<s;i++)
      scanf("%d",&a[i]);

  for(i=0;i<s-1;i++){

      for(j=0;j<s-1-i;j++){

           if(a[j]>a[j+1]){

               temp=a[j];
              a[j]=a[j+1];
              a[j+1]=temp;
           }
      }
  }
  printf("\nThe array after sorting is: ");
  begin=clock();

  for(i=0;i<s;i++)
      printf(" %5.1d",a[i]);

      end=clock();
      time = (float)(end - begin) / CLOCKS_PER_SEC;
      printf("\nTime is: %fs",time);

  return 0;
}


Možete mi ešte poradiť ako spravim aby mi to bralo aj pole znakou (a vypisalo dla abecedy) nielen pole cisel?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 19.10.10
Prihlásený: 28.10.12
Príspevky: 41
Témy: 9 | 9
NapísalOffline : 25.04.2011 22:06 | Bubblesort, Quicksort

porovnaj ich ascii hodnoty


Offline

Užívateľ
Užívateľ
Bubblesort, Quicksort

Registrovaný: 27.12.08
Prihlásený: 13.12.22
Príspevky: 1874
Témy: 96 | 96
Bydlisko: Bratislava,...
NapísalOffline : 26.04.2011 1:20 | Bubblesort, Quicksort

zaefrim to si teda poradil :D

1. ten begin=clock() mas momentalne tak, ze ti to meria dobu za ktoru to vypise to zoradene pole, hod ho medzi tie dva for cykly ked chces merat dobu trvania zoradovania.. a nemyslim ze nieco nameras ked tam budes mat pole do 100 hodnot.. daj si tam dake 10000-ove polia generovane randomom nacitavane zo suboru a tam uz namerias dake rozdiely, pokial ti ide o toto :)

2. Pole znakov zoradene podla abecedy zoradis samozrejme rovnako ako pole intov, v sorte nemusis prepisat ani riadok lebo c-cko dokaze chary spracovat uplne rovnako ako inty (teda automaticky ak sa spytas ci je B vacsie ako A tak ti povie ze hej, lebo B a A su v tych premennych v skutocnosti ulozene ako 66 a 65, a to ze ti ich na obrazovku vypise ako pismena urcuje akym flagom ich posielas printf-u/scanf-u (v tomto pripade daj %c namiesto %d a bude ti to nacitat/vypisovat znaky, a samozrejme predefinuj int a[100]; na char a[100])

3. naco vypisujes tie cisla ako "%5.1d"? aky ma zmysel urcovat pocet desatinnych miest pre celociselny typ premennej? "%5d " spravi to iste a je to ovela krajsi zapis :)


_________________
~Listen to your brain, not your heart~
NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot)
NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI)
Offline

Užívateľ
Užívateľ
Bubblesort, Quicksort

Registrovaný: 22.02.10
Prihlásený: 02.01.19
Príspevky: 4512
Témy: 157 | 157
Bydlisko: Bratislava
NapísalOffline : 26.04.2011 1:24 | Bubblesort, Quicksort

hej neblbnite už je veľa hodín choďte spať :D


_________________
_________________
GIGABYTE P55-UD4--Intel Core i5-750 Quad-Core-- KINGSTON 8GB Turbo DDR3 1333MHz-- Zdroj Gigabyte ODIN GT 550W, GE-M550A-D1-- AMD 7870 GIGABYTE crossfire-- SSD Intel 330 180GB 500 MB/s a 450 MB/s --2x 1TB WD Caviar Black 3.5", SATA 300, 7200 rpm, 3Gb/s, 32MB, Black edition -- Monitor SAMSUNG FX2490HD 24" LED
Notebook Lenovo ThinkPad Z61m CPU:duar core 2,00GHz RAM: 1,5 GB DDR2 667MHz kingston, GPU x1400 128MB/512MB HDD 90GB 2,5" SATA, 7200rmp lenovo
Netebook Lenovo IdeaPad Y560 CPU i3 2,40GHz RAM: 4GB 1333MHz GPU: Ati 5730 1Gb HDD: 500GB 7200 rmp :
Notebook Samsung 700Z CPU: Intel Core i7 3635QM RAM 8GB 1600MHz GPU: GT640m HDD1: SSD1: 128GB 550MB/s čítanie SSD2: 1000GB hdd/ssd DISPLEJ: 1600x900 antireflexný
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 05.04.11
Prihlásený: 12.06.11
Príspevky: 5
Témy: 1 | 1
Napísal autor témyOffline : 27.04.2011 22:48 | Bubblesort, Quicksort

nBXXL diki za rady :), to %5.1d je omyl ja som nechtiac nakopiroval starsi zdrojak co som mal :D.
A dalo yb sa to spravit tak ze by vypisalo vytriedene pole znakou alebo pole cisiel dla toho co tam zadam?(a,b,c alebo 1,2,3)


 [ Príspevkov: 11 ] 


Bubblesort, Quicksort




© 2005 - 2026 PCforum, edited by JanoF