Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace algorytmy374
  8. {
  9. class Program
  10. {
  11. static int N = 20000000, czas;
  12.  
  13. static void swap(ref int a, ref int b)
  14. {
  15. int roboczy = a; a = b; b = roboczy;
  16. }
  17.  
  18. static void SelectionSort(int[] tab)
  19. {
  20. int m;
  21. for (int i = 1; i <= N; i++)
  22. {
  23. m = i;
  24. for (int j = i + 1; j <= N; j++)
  25. {
  26. if (tab[j] < tab[m])
  27. {
  28. swap(ref tab[m], ref tab[i]);
  29. }
  30. }
  31. }
  32. }
  33.  
  34. static void HeapSprt(int[] tab)
  35. {
  36. int k, m, x, j;
  37.  
  38. //robimy kopiec
  39. for (int i = 2; i <= N; i++)
  40. {
  41. j = i; k = j / 2; x = tab[i];
  42. while ((k > 0) && (tab[k] < x))
  43. {
  44. tab[j] = tab[k]; j = k; k = j / 2;
  45. }
  46. tab[j] = x;
  47. }
  48.  
  49. //rozbieramy kopiec
  50. for (int i = N; i > 1; i--)
  51. {
  52. swap(ref tab[1], ref tab[i]);
  53. j = 1; k = 2;
  54. while (k < i)
  55. {
  56. if ((k + 1 < i) && (tab[k + 1] > tab[1]))
  57. m = k + 1;
  58. else m = k;
  59.  
  60. if (tab[m] <= tab[j])
  61. break;
  62. swap(ref tab[m], ref tab[j]);
  63. j = m; k = j + j;
  64. }
  65. }
  66. }
  67.  
  68. static void Main(string[] args)
  69. {
  70. DateTime startTime;
  71. Random los = new Random();
  72. int[] tab1 = new int[N + 1];
  73. int[] tab2 = new int[N + 1];
  74.  
  75. for (int i = 1; i <= N; i++) tab1[i] = tab2[i] = los.Next(0, 9999);
  76.  
  77. if (N < 21)
  78. for (int i = 1;i<=N;i++)
  79. {
  80. Console.Write(tab1[i] + " ");
  81. }
  82.  
  83. Console.WriteLine("\n");
  84. //selection sort
  85. //startTime = DateTime.Now;
  86. //SelectionSort(tab1);
  87. //czas = (int)(DateTime.Now - startTime).TotalMilliseconds;
  88. //Console.WriteLine("czas sortowania: " + czas);
  89. //Console.WriteLine("\n");
  90.  
  91. //heap sort
  92. startTime = DateTime.Now;
  93. HeapSprt(tab2);
  94. czas = (int)(DateTime.Now - startTime).TotalMilliseconds;
  95. Console.WriteLine("czas kopcowania: " + czas);
  96. Console.Read();
  97. }
  98. }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement