asmodeus94

zadSort

Feb 19th, 2013
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.64 KB | None | 0 0
  1. /*Zadanie:
  2. Stworz 3 1000 elementowe tablice tab1[1000] tab2[1000] i tab3[1000]. Tab1 ma byc posortowana rosnąco, tab2 - malejaca, tab3- random od 0 do 9.
  3. Wykonaj kopie tablic (do kazdego sortowania) - kazde z sortowan ma miec swoja tablice.
  4. Wykorzystujac poniższy kod uzupełnij tabelke:
  5. Sortowanie      |   czas            |   ilosc operacji      |
  6.             |   Tab1    Tab2    Tab3    |   Tab1    Tab2    Tab3    |
  7. Wybór           |               |               |
  8. Wstawianie      |               |               |
  9. Babelkowe       |               |               |
  10. Babelkowe+      |               |               |
  11.  
  12.  
  13. Przypomnienie time.h
  14.  
  15. #include <time.h>
  16. #include <conio.h>
  17. #include <iostream>
  18. using namespace std;
  19.  
  20. int main(){ int s;
  21.   clock_t start, stop;
  22.   float time;
  23.   start=clock();
  24.   cout<<start<<endl;
  25.  
  26.   for(s=1;s<100;s++){cout<<s;system("cls");} //tutaj umieszczamy sprawdzany algorytm
  27.  
  28.   stop=clock();
  29.   cout<<"start="<<start<<endl;
  30.   cout<<"stop="<<stop<<endl;
  31.   time=(stop - start);
  32.   cout<<"time="<<time<<endl;    
  33.   getch();
  34.     return 0;
  35. }*/
  36. #include<iostream>
  37. #include<cstdio>
  38. #include<ctime>
  39. #include<time.h>
  40. #include<cstdlib>
  41. #include<windows.h>
  42. using namespace std;
  43. const int ile=1000;
  44. int tab1[ile],tab2[ile],tab3[ile],tabZ[ile],ilOpPrze;
  45. HANDLE g_hConsol = GetStdHandle(STD_OUTPUT_HANDLE);
  46.  
  47. void gotoxy(const int x11, const int y22){
  48.         COORD coord = {x11, y22};
  49.         SetConsoleCursorPosition(g_hConsol, coord);
  50. }
  51. void sortujB(){
  52. int j,tab1L[ile],tab2L[ile],tab3L[ile];
  53. long int ilOp;
  54. clock_t start, stop;
  55. float czas;
  56. for(int i=0;i<ile;i++){
  57.     tab1L[i]=tab1[i];
  58.     tab2L[i]=tab2[i];
  59.     tab3L[i]=tab3[i];
  60. }
  61. ilOp=0;
  62. start=clock();
  63.      for(int i=0;i<ile;i++){ //tab1
  64.      ilOp++;
  65.               for(j=0;j<ile;j++){
  66.               ilOp++;
  67.                  if(tab1L[j]>tab1L[j+1]){swap(tab1L[j],tab1L[j+1]);ilOp++;}
  68.               }
  69.      }
  70. stop=clock();
  71. czas=stop-start;
  72. gotoxy(19,4);cout<<czas;
  73. gotoxy(46,4);cout<<ilOp;
  74. ilOp=0;
  75. start=clock();
  76.      for(int i=0;i<ile;i++){ //tab2
  77.      ilOp++;
  78.               for(j=0;j<ile;j++){
  79.               ilOp++;
  80.                  if(tab2L[j]>tab2L[j+1]){swap(tab2L[j],tab2L[j+1]);ilOp++;}
  81.               }
  82.      }
  83. stop=clock();
  84. czas=(stop-start);
  85. gotoxy(28,4);cout<<czas;
  86. gotoxy(55,4);cout<<ilOp;
  87. ilOp=0;
  88. start=clock();
  89.      for(int i=0;i<ile;i++){ //tab3
  90.      ilOp++;
  91.               for(j=0;j<ile;j++){
  92.               ilOp++;
  93.                  if(tab3L[j]>tab3L[j+1]){swap(tab3L[j],tab3L[j+1]);ilOp++;}
  94.               }
  95.      }
  96. stop=clock();
  97. czas=(stop-start);
  98. gotoxy(37,4);cout<<czas;
  99. gotoxy(65,4);cout<<ilOp;
  100. }
  101. void sortujBU(){
  102. int j,tab1L[ile],tab2L[ile],tab3L[ile];
  103. long int ilOp;
  104. clock_t start, stop;
  105. float czas;
  106. for(int i=0;i<ile;i++){
  107.     tab1L[i]=tab1[i];
  108.     tab2L[i]=tab2[i];
  109.     tab3L[i]=tab3[i];
  110. }
  111. ilOp=0;
  112. start=clock();
  113.      for(int i=ile-1;i>0;i--){ //tab1
  114.      ilOp++;
  115.               for(j=0;j<i;j++){
  116.               ilOp++;
  117.                  if(tab1L[j]>tab1L[j+1]){swap(tab1L[j],tab1L[j+1]);ilOp++;}
  118.               }
  119.      }
  120. stop=clock();
  121. czas=(stop-start);
  122. gotoxy(19,5);cout<<czas;
  123. gotoxy(46,5);cout<<ilOp;
  124. ilOp=0;
  125. start=clock();
  126.      for(int i=ile-1;i>0;i--){ //tab2
  127.      ilOp++;
  128.               for(j=0;j<i;j++){
  129.               ilOp++;
  130.                  if(tab2L[j]>tab2L[j+1]){swap(tab2L[j],tab2L[j+1]);ilOp++;}
  131.               }
  132.      }
  133. stop=clock();
  134. czas=(stop-start);
  135. gotoxy(28,5);cout<<czas;
  136. gotoxy(55,5);cout<<ilOp;
  137. ilOp=0;
  138. start=clock();
  139.      for(int i=ile-1;i>0;i--){ //tab3
  140.      ilOp++;
  141.               for(j=0;j<i;j++){
  142.               ilOp++;
  143.                  if(tab3L[j]>tab3L[j+1]){swap(tab3L[j],tab3L[j+1]);ilOp++;}
  144.               }
  145.      }
  146. stop=clock();
  147. czas=(stop-start);
  148. gotoxy(37,5);cout<<czas;
  149. gotoxy(65,5);cout<<ilOp;
  150. }
  151. void los(){
  152. int j=999;
  153. srand(time(NULL));
  154. for(int i=0;i<ile;i++){
  155.         tab3[i]=rand()%10;
  156.         tab1[i]=i;
  157.         tab2[i]=j;
  158.         j--;
  159. }
  160. }
  161. void sortujWyb(){
  162. int i,poz,max,tab1L[ile],tab2L[ile],tab3L[ile];
  163. long int ilOp;
  164. clock_t start, stop;
  165. float czas;
  166. for(int i=0;i<ile;i++){
  167.     tab1L[i]=tab1[i];
  168.     tab2L[i]=tab2[i];
  169.     tab3L[i]=tab3[i];
  170. }
  171. ilOp=0;
  172. start=clock();
  173. for(i=0;i<ile;i++){//tab1
  174. max=tab1L[i];
  175. poz=i;
  176. ilOp++;
  177.     for (int a=i;a<ile;a++){
  178.     ilOp++;
  179.            if (tab1L[a]<max){
  180.            max=tab1L[a];
  181.            poz=a;
  182.            swap(tab1L[poz],tab1L[i]);
  183.            ilOp++;
  184.            }
  185.     }
  186. }
  187. stop=clock();
  188. czas=(stop-start);
  189. gotoxy(19,2);cout<<czas;
  190. gotoxy(46,2);cout<<ilOp;
  191. ilOp=0;
  192. start=clock();
  193. for(i=0;i<ile;i++){//tab2
  194. max=tab2L[i];
  195. poz=i;
  196. ilOp++;
  197.     for (int a=i;a<ile;a++){
  198.     ilOp++;
  199.            if (tab2L[a]<max){
  200.            max=tab2L[a];
  201.            poz=a;
  202.            swap(tab2L[poz],tab2L[i]);
  203.            ilOp++;
  204.            }
  205.     }
  206. }
  207. stop=clock();
  208. czas=(stop-start);
  209. gotoxy(28,2);cout<<czas;
  210. gotoxy(55,2);cout<<ilOp;
  211. ilOp=0;
  212. start=clock();
  213. for(i=0;i<ile;i++){//tab3
  214. max=tab3L[i];
  215. poz=i;
  216. ilOp++;
  217.     for (int a=i;a<ile;a++){
  218.     ilOp++;
  219.            if (tab3L[a]<max){
  220.            max=tab3L[a];
  221.            poz=a;
  222.            swap(tab3L[poz],tab3L[i]);
  223.            ilOp++;
  224.            }
  225.     }
  226. }
  227. stop=clock();
  228. czas=(stop-start);
  229. gotoxy(37,2);cout<<czas;
  230. gotoxy(65,2);cout<<ilOp;
  231. }
  232. void restartTabZ(){
  233.     for(int i=0;i<ile;i++){
  234.             tabZ[i]=0;
  235.     }
  236. }
  237. int przesun(int ileP){
  238. ilOpPrze=0;
  239. for(int i=0;i<ileP;i++){
  240.      tabZ[i]=tabZ[i+1];
  241.      ilOpPrze++;
  242. }
  243. }
  244. int sortujWst(){
  245. int j,war,byl,tab1L[ile],tab2L[ile],tab3L[ile];
  246. long int ilOp;
  247. clock_t start, stop;
  248. float czas;
  249. for(int i=0;i<ile;i++){
  250.     tab1L[i]=tab1[i];
  251.     tab2L[i]=tab2[i];
  252.     tab3L[i]=tab3[i];
  253. }
  254. ilOp=0;
  255. restartTabZ(); //tab1
  256. start=clock();
  257. tabZ[ile-1]=tab1L[ile-1];
  258. for(int i=0;i<ile-1;i++){
  259. war=tab1L[i];byl=0;
  260. ilOp++;
  261.     for(j=ile-1;j>(ile-1)-(i+1);j--){
  262.     ilOp++;
  263.        if(war>tabZ[j]){przesun(j);tabZ[j]=war;byl=1;ilOp+=ilOpPrze+1;break;}
  264.        }
  265.     if(byl==0){tabZ[(ile-1)-(i+1)]=war;ilOp++;}
  266. }
  267. stop=clock();
  268. czas=stop-start;
  269. gotoxy(19,3);cout<<czas;
  270. gotoxy(46,3);cout<<ilOp;
  271. ilOp=0;
  272. restartTabZ(); //tab2
  273. start=clock();
  274. tabZ[ile-1]=tab2L[ile-1];
  275. for(int i=0;i<ile-1;i++){
  276. war=tab2L[i];byl=0;
  277. ilOp++;
  278.     for(j=ile-1;j>(ile-1)-(i+1);j--){
  279.     ilOp++;
  280.        if(war>tabZ[j]){przesun(j);tabZ[j]=war;byl=1;ilOp+=ilOpPrze+1;break;}
  281.        }
  282.     if(byl==0){tabZ[(ile-1)-(i+1)]=war;ilOp++;}
  283. }
  284. stop=clock();
  285. czas=stop-start;
  286. gotoxy(28,3);cout<<czas;
  287. gotoxy(55,3);cout<<ilOp;
  288. ilOp=0;
  289. restartTabZ();// tab3
  290. start=clock();
  291. tabZ[ile-1]=tab3L[ile-1];
  292. for(int i=0;i<ile-1;i++){
  293. war=tab3L[i];byl=0;
  294. ilOp++;
  295.     for(j=ile-1;j>(ile-1)-(i+1);j--){
  296.     ilOp++;
  297.        if(war>tabZ[j]){przesun(j);tabZ[j]=war;ilOp+=ilOpPrze+1;byl=1;break;}
  298.        }
  299.     if(byl==0){tabZ[(ile-1)-(i+1)]=war;ilOp++;}
  300. }
  301. stop=clock();
  302. czas=stop-start;
  303. gotoxy(37,3);cout<<czas;
  304. gotoxy(65,3);cout<<ilOp;
  305.  
  306. //for(int i=0;i<ile;i++){tab3[i]=tabZ[i];}
  307. }
  308.  
  309. void tabelka(){
  310. cout<<"Sortowanie\n\n";
  311. cout<<"Wybor\n";
  312. cout<<"Wstawianie\n";          
  313. cout<<"Babelkowe\n";
  314. cout<<"Babelkowe+\n";
  315. for(int i=0;i<6;i++){gotoxy(15,i);cout<<"|";gotoxy(45,i);cout<<"|";gotoxy(73,i);cout<<"|";}// pionowe linie
  316. gotoxy(27,0);cout<<"czas";gotoxy(53,0);cout<<"ilosc operacji"; // 1
  317. gotoxy(19,1);                       // 2
  318. cout<<"Tab1     Tab2     Tab3";     // 2
  319. gotoxy(48,1);                       // 2
  320. cout<<"Tab1     Tab2     Tab3";     // 2
  321. /*
  322. Sortowanie    |           czas              |       ilosc operacji          | 1
  323.               |  Tab1     Tab2     Tab3     |  Tab1       Tab2       Tab3   | 2
  324. Wybór         |                            |                               | 3 (2)
  325. Wstawianie    |                             |                               | 4 (3)
  326. Babelkowe     |                             |                               | 5 (*)
  327. Babelkowe+    |                             |                               | 6 (*)
  328. */  
  329. }
  330. int main(){
  331. clock_t start, stop;
  332. tabelka();los();sortujWyb();sortujWst();sortujB();sortujBU();
  333. system("pause>null");
  334. }
Advertisement
Add Comment
Please, Sign In to add comment