Advertisement
Guest User

fajna ta infa

a guest
Nov 22nd, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. //qsort
  2. #include<iostream>
  3. #include <bits/stdc++.h>
  4. #include<cstdlib>
  5. #include<ctime>
  6. using namespace std;
  7. int m,l,p,t[1000005],n;
  8. void qsorcik(int l, int p)
  9. {
  10. int m=l;
  11. for(int i=l+1;i<=p;i++)
  12. {
  13. if(t[i]<=t[l])
  14. {
  15. swap(t[++m],t[i]);
  16. }
  17. }
  18. swap(t[l],t[m]);
  19. if(m-1-l>0)qsorcik(l, m-1);
  20. if(p-m-1>0)qsorcik(m+1, p);
  21. }
  22. void losuj()
  23. {
  24. srand(time(NULL));
  25. for(int i=0;i<20;i++)
  26. {
  27. t[i]=rand()%50+10;
  28. }
  29. }
  30. int main()
  31. {
  32. losuj();
  33. for(int i=0;i<20;i++)
  34. {
  35. cout<<t[i]<<' ';
  36. }
  37. cout<<endl;
  38. qsorcik(0,19);
  39. for(int i=0;i<20;i++)
  40. {
  41. cout<<t[i]<<' ';
  42. }
  43. }
  44. //hipik
  45.  
  46.  
  47.  
  48.  
  49. //
  50. // main.cpp
  51. // Sortowanie przez kopcowanie Heap Sort
  52. //
  53. // Created by andy on 22.11.2017.
  54. // Copyright © 2017 andy. All rights reserved.
  55. //
  56.  
  57. #include <cstdio>
  58. #include <algorithm>
  59. const int MXN=1e6+5;
  60. int tablica[MXN],n,a,wynik[MXN];
  61. void przywruc(int index1){
  62. int lewa=2*index1,prawa=2*index1+1;//lewy index syna 2x prawy index syna 2x+1
  63. int maximum=index1;
  64. if(tablica[lewa]>tablica[maximum]&&lewa<=n)//jezeli lewy syn jest mniejszy ojciec to bede go rozpatrywal
  65. maximum=lewa;
  66. if(tablica[prawa]>tablica[maximum]&&prawa<=n)//jezeli prawy syn jest mniejszy ojciec to bede go rozpatrywal
  67. maximum=prawa;
  68. if(maximum>index1){//jezeli nie wyszedl poza tablice to ide dalej
  69. std::swap(tablica[index1],tablica[maximum]); //zamieniam mniejszy z lewego i prawego syna i do niego wchodze
  70. przywruc(maximum);
  71. }
  72. }
  73. void usun(){
  74. tablica[1]=tablica[n];//usuniecie korzenie i dodanie w jego miejsce ostatniego w tablicy
  75. n--;
  76. przywruc(1);//przewracanie kopieca
  77. }
  78. int maks(){
  79. return tablica[1];
  80. }
  81. int main(){
  82. scanf("%d",&n);
  83. int m=n;
  84. for(int i=1;i<=n;i++){
  85. scanf("%d",&tablica[i]);
  86. }
  87. int j=n;
  88. for(int i=n/2;i>=1;i--){
  89. przywruc(i);//tworzenie kopca
  90. }
  91. while(n>=1){
  92. wynik[j]=maks();//robienie tablicy posortowanej z korzenia kopca
  93. j--;
  94. usun();
  95. }
  96. for(int i=1;i<=m;i++)
  97. printf("%d ",wynik[i]);
  98. return 0;
  99. }
  100. //merge
  101.  
  102.  
  103.  
  104. #include <cstdio>
  105. #include<cstdlib>
  106. #include<ctime>
  107. const int wielkosc_tablicy=100;
  108. int tablica[wielkosc_tablicy+5],n;
  109. int L[wielkosc_tablicy],P[wielkosc_tablicy]; // tablice pomocnicze przy scalaniu
  110. int INF=1e9;
  111. void Merge(int lewy,int srodek,int prawy){ //Scalanie tablicy
  112. int dl1=srodek-lewy+1;
  113. int dl2=prawy-srodek;
  114. for(int i=1;i<=dl1;i++)
  115. L[i]=tablica[lewy+i-1]; //przepisywanie do 2 tablic pomocniczych
  116. for(int i=1;i<=dl2;i++)
  117. P[i]=tablica[i+srodek];
  118. L[dl1+1]=INF;// straznicy miasta
  119. P[dl2+1]=INF;
  120. int i=1,j=1;
  121. for(int poczatek=lewy;poczatek<=prawy;poczatek++){ // scalanie 2 tablic w jedno
  122. if(L[i]<=P[j]){
  123. tablica[poczatek]=L[i];
  124. i++;
  125. }
  126. else {
  127. tablica[poczatek]=P[j];
  128. j++;
  129. }
  130. }
  131. }
  132. void Merge_Sort(int lewy,int prawy){
  133. if(lewy<prawy){
  134. int srodek=(lewy+prawy)/2;
  135. Merge_Sort(lewy,srodek); // dzielenie na tablicy na pol
  136. Merge_Sort(srodek+1,prawy);
  137. Merge(lewy,srodek,prawy);
  138. }
  139. }
  140. void losuj()
  141. {
  142. srand(time(NULL));
  143. for(int i=0;i<20;i++)
  144. {
  145. tablica[i]=rand()%50+10;
  146. }
  147. }
  148. int main(){
  149. losuj();
  150. for(int i=0;i<20;i++)
  151. printf("%d ",tablica[i]);
  152. Merge_Sort(0,19);
  153. printf("\n");
  154. for(int i=0;i<20;i++)
  155. printf("%d ",tablica[i]);
  156. return 0;
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement