Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 7th, 2012  |  syntax: None  |  size: 1.62 KB  |  hits: 25  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include<iostream>
  2. #include <windows.h>
  3. #include<ctime>
  4. using namespace std;  
  5. int licznik_porownan=0;
  6. int licznik_zamian=0;
  7.                          
  8. int partition(int tab[], int l, int r)
  9. {
  10.         int q=tab[l];
  11.         int i=l-1;
  12.         int j=r+1;
  13. do
  14. {
  15.  
  16.         do
  17.         {
  18.                 i++;
  19.                 licznik_porownan=licznik_porownan+1;
  20.         }while(tab[i]<q);
  21.         do
  22.         {
  23.                 j--;
  24.                 licznik_porownan=licznik_porownan+1;
  25.         }while(tab[j]>q);
  26.  
  27.                 if(i<j)
  28.                 {
  29.                         int pom=tab[j];
  30.                         tab[j]=tab[i];
  31.                         tab[i]=pom;
  32.                         licznik_zamian=licznik_zamian+1;
  33.                 }
  34.                 licznik_porownan=licznik_porownan+1;
  35.                
  36. }while(i<j);
  37. return j;
  38. }
  39.  
  40. void quicksort(int tab[], int l, int r)
  41. {
  42.         if(l<r)
  43.         {
  44.         int x=partition(tab, l, r);
  45.         quicksort(tab, l, x);
  46.         quicksort(tab, x+1, r);
  47.         }
  48.         licznik_porownan=licznik_porownan+1;
  49. }
  50. int main()
  51. {
  52.  
  53.           LARGE_INTEGER frequency;        
  54.     LARGE_INTEGER t1, t2;          
  55.     double elapsedTime;
  56.         QueryPerformanceFrequency(&frequency);
  57.  
  58.         int k=0;
  59.         int m=0;
  60.         const int n=10000;
  61.         int tab[n];
  62.         cout<<"przed"<<endl;
  63.         for (int i=0; i<n; i++)
  64.         {
  65.                 tab[i]=i;
  66.                 cout<<tab[i];
  67.         }
  68.         for(int i=0; i<n/2; i++)
  69.  {
  70.  int pom=tab[n-i-1];
  71.  tab[n-i-1]=tab[i];
  72.  tab[i]=pom;
  73.  }
  74.        
  75.        
  76.         cout<<endl;
  77.  
  78.         QueryPerformanceCounter(&t1);
  79.         partition(tab, 0, n-1);
  80.         quicksort(tab, 0, n-1);
  81.         QueryPerformanceCounter(&t2);
  82.         cout<<"po sorcie"<<endl;
  83.         for(int i=0; i<n; i++)
  84.         {
  85.                 cout<<tab[i]<<" ";
  86.         }
  87.         cout<<endl<<endl;
  88.         cout<<licznik_porownan<< " porownan\n";
  89.         cout<<licznik_zamian<< " zamian\n";
  90.         elapsedTime = (t2.QuadPart - t1.QuadPart) * 1000.0 / frequency.QuadPart;
  91.     cout <<"czas: "<< elapsedTime << " ms.\n\n";
  92. system("PAUSE");
  93.     return 0;
  94. }