Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. using System;
  2.  
  3. namespace SortowanieSzybkie
  4. {
  5. class MainClass
  6. {
  7. public static void Main(string[] args)
  8. {
  9. int n, x;
  10. var rand = new Random();
  11. Console.WriteLine("Ile liczb chcesz posortować: ");
  12. n = Convert.ToInt32(Console.ReadLine());
  13. Console.WriteLine("Wybierz wariant: ");
  14. Console.WriteLine("1. Pivot - srednia geometryczna z pierwszego, srodkowego i ostatniego elementu tablicy. ");
  15. Console.WriteLine("2. Pivot - srednia arytmetyczna z dwoch losowych elementów tablicy");
  16. x = Convert.ToInt32(Console.ReadLine());
  17. var tab = new int[n];
  18. for (int i = 0; i < n; i++)//utworzenie tablicy losowych elementow
  19. {
  20. tab[i] = rand.Next(1, 10000);//zakres elementów do losowania
  21. }
  22. Console.WriteLine("Tablica przed sortowaniem: ");
  23. for(int i = 0; i < n; i++)
  24. {
  25. Console.Write(tab[i] + " ");
  26. }
  27. Console.WriteLine();
  28.  
  29.  
  30. if(x == 1) QuickSort(tab, 0, tab.Length - 1);
  31. if (x == 2) QuickSort2(tab, 0, tab.Length - 1);
  32.  
  33. Console.WriteLine();
  34. Console.WriteLine("Tablica po sortowaniu: ");
  35. for (int i = 0; i < n; i++)
  36. {
  37. Console.Write(tab[i] + " ");
  38. }
  39.  
  40.  
  41. Console.ReadKey();
  42. }
  43.  
  44. public static void QuickSort(int[] tab, int p, int q)
  45. {
  46. var i = p;//pierwszy element tablicy( indeks 0 )
  47. var j = q;//ostatni element tablicy( indeks ostatniego elementu
  48. int r = q / 2;
  49. double f = tab[p];
  50. double c = tab[r];
  51. double l = tab[q];
  52. double x = (f * c * l);
  53. double y = 1d / 3d;
  54. /// Pivot - srednia geometryczna z pierwszego, srodkowego i ostatniego elementu tablicy:
  55. var pivot = Math.Pow(x, y);
  56. //Console.WriteLine(pivot);
  57.  
  58. while (i < j)
  59. {
  60. while (tab[i] < pivot) i++;
  61. while (tab[j] > pivot) j--;
  62. if (i <= j)
  63. {
  64. var schowek = tab[i];
  65. tab[i++] = tab[j];
  66. tab[j--] = schowek;
  67. }
  68. }
  69. if (p < j) QuickSort(tab, p, j);
  70. if (i < q) QuickSort(tab, i, q);
  71. }
  72.  
  73. public static void QuickSort2(int[] tab, int p, int q)
  74. {
  75. var rand1 = new Random();
  76. var i = p;
  77. var j = q;
  78. /// Pivot - srednia arytmetyczna z dwoch losowych elementów tablicy:
  79. var pivot = ((tab[rand1.Next(p, q)] + tab[rand1.Next(p, q)]) / 2);
  80. while (i < j)
  81. {
  82. while (tab[i] < pivot) i++;
  83. while (tab[j] > pivot) j--;
  84. if (i <= j)
  85. {
  86. var schowek = tab[i];
  87. tab[i++] = tab[j];
  88. tab[j--] = schowek;
  89. }
  90. }
  91. if (p < j) QuickSort2(tab, p, j);
  92. if (i < q) QuickSort2(tab, i, q);
  93.  
  94. }
  95. }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement