Advertisement
Guest User

s34

a guest
Nov 14th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. using System;
  2.  
  3. namespace SortPrzezKopcowanie
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. int[] liczby = new int[7] { 9, 6, 5, 5, 2, 11, 4 };
  10. int i;
  11. Console.WriteLine("Tablica przed sortowaniem:");
  12. for (i = 0; i < 7; i++)
  13. {
  14. string liczbyStr = liczby[i].ToString();
  15. Console.WriteLine(liczbyStr);
  16. }
  17. Sortowanie(liczby, 7);
  18. Console.WriteLine("Posortowana tablica:");
  19. for (i = 0; i < 7; i++)
  20. {
  21. string liczbyStr = liczby[i].ToString();
  22. Console.WriteLine(liczbyStr);
  23. }
  24. }
  25. public static void Sortowanie(int [] liczby, int wielkosc)
  26. {
  27. wielkosc = liczby.Length;
  28. for (int i = wielkosc / 2 - 1; i>=0; i--)
  29. {
  30. Kopiec(liczby, wielkosc, i);
  31. }
  32. for(int i = wielkosc - 1; i>=0; i--)
  33. {
  34. int tmp = liczby[0];
  35. liczby[0] = liczby[i];
  36. liczby[i] = tmp;
  37. Kopiec(liczby, wielkosc, 0);
  38. }
  39. }
  40. public static void Kopiec(int [] liczby, int wielkosc, int rodzic)
  41. {
  42. int najwiekszy = rodzic;
  43. int lewyPotomek = 2 * rodzic + 1;
  44. int prawyPotomek = 2 * rodzic + 2;
  45. if (lewyPotomek < wielkosc && liczby[lewyPotomek] > liczby[najwiekszy])
  46. najwiekszy = lewyPotomek;
  47. if (prawyPotomek < wielkosc && liczby[prawyPotomek] > liczby[najwiekszy])
  48. najwiekszy = prawyPotomek;
  49. if(najwiekszy != rodzic)
  50. {
  51. int tmp = liczby[rodzic];
  52. liczby[rodzic] = liczby[najwiekszy];
  53. liczby[najwiekszy] = tmp;
  54. Kopiec(liczby, wielkosc, najwiekszy);
  55. }
  56.  
  57. }
  58. }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement