Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace SortPrzezKopcowanie
- {
- class Program
- {
- static void Main(string[] args)
- {
- int[] liczby = new int[7] { 9, 6, 5, 5, 2, 11, 4 };
- int i;
- Console.WriteLine("Tablica przed sortowaniem:");
- for (i = 0; i < 7; i++)
- {
- string liczbyStr = liczby[i].ToString();
- Console.WriteLine(liczbyStr);
- }
- Sortowanie(liczby, 7);
- Console.WriteLine("Posortowana tablica:");
- for (i = 0; i < 7; i++)
- {
- string liczbyStr = liczby[i].ToString();
- Console.WriteLine(liczbyStr);
- }
- }
- public static void Sortowanie(int [] liczby, int wielkosc)
- {
- wielkosc = liczby.Length;
- for (int i = wielkosc / 2 - 1; i>=0; i--)
- {
- Kopiec(liczby, wielkosc, i);
- }
- for(int i = wielkosc - 1; i>=0; i--)
- {
- int tmp = liczby[0];
- liczby[0] = liczby[i];
- liczby[i] = tmp;
- Kopiec(liczby, wielkosc, 0);
- }
- }
- public static void Kopiec(int [] liczby, int wielkosc, int rodzic)
- {
- int najwiekszy = rodzic;
- int lewyPotomek = 2 * rodzic + 1;
- int prawyPotomek = 2 * rodzic + 2;
- if (lewyPotomek < wielkosc && liczby[lewyPotomek] > liczby[najwiekszy])
- najwiekszy = lewyPotomek;
- if (prawyPotomek < wielkosc && liczby[prawyPotomek] > liczby[najwiekszy])
- najwiekszy = prawyPotomek;
- if(najwiekszy != rodzic)
- {
- int tmp = liczby[rodzic];
- liczby[rodzic] = liczby[najwiekszy];
- liczby[najwiekszy] = tmp;
- Kopiec(liczby, wielkosc, najwiekszy);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement