Advertisement
youuw

zadanie domowe 1 algorytmy

May 23rd, 2023
590
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.85 KB | None | 0 0
  1. using System;
  2.  
  3. namespace zadanie
  4. {
  5.     public class Program
  6.     {
  7.         public static string ProsteWstawianie(string text)
  8.         {
  9.             char[] keys = text.ToCharArray();
  10.  
  11.             for (int i = 1; i < keys.Length; i++)
  12.             {
  13.                 char key = keys[i];
  14.                 int j = i - 1;
  15.  
  16.                 while (j >= 0 && keys[j] > key)
  17.                 {
  18.                     keys[j + 1] = keys[j];
  19.                     j--;
  20.                 }
  21.  
  22.                 keys[j + 1] = key;
  23.             }
  24.  
  25.             return new string(keys);
  26.         }
  27.  
  28.         public static string WstawianiePolowkowe(string text)
  29.         {
  30.             char[] keys = text.ToCharArray();
  31.  
  32.             for (int i = 1; i < keys.Length; i++)
  33.             {
  34.                 char key = keys[i];
  35.                 int lewo = 0;
  36.                 int prawo = i-1;
  37.  
  38.                 while (lewo <= prawo)
  39.                 {
  40.                     int srednia = (lewo + prawo) / 2;
  41.  
  42.                     if (keys[srednia] > key) {
  43.                         prawo = srednia - 1;
  44.                     } else {
  45.                         lewo = srednia + 1;
  46.                     }
  47.                 }
  48.  
  49.                 for (int j = i-1; j >= lewo; j--)
  50.                     keys[j+1] = keys[j];
  51.  
  52.                 keys[lewo] = key;
  53.             }
  54.  
  55.             return new string(keys);
  56.         }
  57.  
  58.         public static string ProsteWybieranie(string text)
  59.         {
  60.             char[] keys = text.ToCharArray();
  61.  
  62.             for (int i = 0; i < keys.Length - 1; i++)
  63.             {
  64.                 int minIndex = i;
  65.  
  66.                 for (int j = i + 1; j < keys.Length; j++)
  67.                 {
  68.                     if (keys[j] < keys[minIndex])
  69.                         minIndex = j;
  70.                 }
  71.  
  72.                 (keys[minIndex], keys[i]) = (keys[i], keys[minIndex]);
  73.             }
  74.  
  75.             return new string(keys);
  76.         }
  77.  
  78.         public static string SortowanieBabelkowe(string text)
  79.         {
  80.             char[] keys = text.ToCharArray();
  81.             bool zamienione;
  82.  
  83.             for (int i = 0; i < keys.Length - 1; i++)
  84.             {
  85.                 zamienione = false;
  86.  
  87.                 for (int j = 0; j < keys.Length - i - 1; j++)
  88.                 {
  89.                     if (keys[j] > keys[j + 1])
  90.                     {
  91.                         (keys[j + 1], keys[j]) = (keys[j], keys[j + 1]);
  92.                         zamienione = true;
  93.                     }
  94.                 }
  95.  
  96.                 if (!zamienione)
  97.                     break;
  98.             }
  99.  
  100.             return new string(keys);
  101.         }
  102.  
  103.         public static string SortowanieKoktailowe(string text)
  104.         {
  105.             char[] keys = text.ToCharArray();
  106.             bool zamienione;
  107.  
  108.             int start = 0;
  109.             int end = keys.Length - 1;
  110.  
  111.             while (start < end)
  112.             {
  113.                 zamienione = false;
  114.  
  115.                 for (int i = start; i < end; i++)
  116.                 {
  117.                     if (keys[i] > keys[i + 1])
  118.                     {
  119.                         (keys[i + 1], keys[i]) = (keys[i], keys[i + 1]);
  120.                         zamienione = true;
  121.                     }
  122.                 }
  123.  
  124.                 if (!zamienione)
  125.                     break;
  126.  
  127.                 end--;
  128.  
  129.                 for (int i = end - 1; i >= start; i--)
  130.                 {
  131.                     if (keys[i] > keys[i + 1])
  132.                     {
  133.                         (keys[i + 1], keys[i]) = (keys[i], keys[i + 1]);
  134.                         zamienione = true;
  135.                     }
  136.                 }
  137.  
  138.                 if (!zamienione)
  139.                     break;
  140.  
  141.                 start++;
  142.             }
  143.  
  144.             return new string(keys);
  145.         }
  146.  
  147.         public static string SzybkieSortowanie(string text)
  148.         {
  149.             char[] keys = text.ToCharArray();
  150.             SzybieSortowanieR(keys, 0, keys.Length - 1);
  151.             return new string(keys);
  152.         }
  153.  
  154.         public static void SzybieSortowanieR(char[] keys, int left, int right)
  155.         {
  156.             if (left < right)
  157.             {
  158.                 int index = SzybkieSortowanieM(keys, left, right);
  159.                 SzybieSortowanieR(keys, left, index - 1);
  160.                 SzybieSortowanieR(keys, index + 1, right);
  161.             }
  162.         }
  163.  
  164.         public static int SzybkieSortowanieM(char[] keys, int left, int right)
  165.         {
  166.             char temp = keys[right];
  167.             int i = left - 1;
  168.  
  169.             for (int j = left; j < right; j++)
  170.             {
  171.                 if (keys[j] <= temp)
  172.                 {
  173.                     i++;
  174.                 (keys[j], keys[i]) = (keys[i], keys[j]);
  175.             }
  176.         }
  177.  
  178.             (keys[right], keys[i + 1]) = (keys[i + 1], keys[right]);
  179.             return i + 1;
  180.         }
  181.  
  182.         public static string StogoweSortowanie(string text)
  183.         {
  184.             char[] keys = text.ToCharArray();
  185.             int n = keys.Length;
  186.  
  187.             for (int i = n / 2 - 1; i >= 0; i--)
  188.                 Stog(keys, n, i);
  189.  
  190.             for (int i = n - 1; i >= 0; i--)
  191.             {
  192.                 (keys[i], keys[0]) = (keys[0], keys[i]);
  193.                 Stog(keys, i, 0);
  194.             }
  195.  
  196.             return new string(keys);
  197.         }
  198.  
  199.         public static void Stog(char[] keys, int n, int i)
  200.         {
  201.             int najwiekszy = i;
  202.             int left = 2 * i + 1;
  203.             int right = 2 * i + 2;
  204.  
  205.             if (left < n && keys[left] > keys[najwiekszy])
  206.                 najwiekszy = left;
  207.  
  208.             if (right < n && keys[right] > keys[najwiekszy])
  209.                 najwiekszy = right;
  210.  
  211.             if (najwiekszy != i)
  212.             {
  213.                 (keys[najwiekszy], keys[i]) = (keys[i], keys[najwiekszy]);
  214.                 Stog(keys, n, najwiekszy);
  215.             }
  216.         }
  217.  
  218.         public static void Main()
  219.         {
  220.             string text = "";
  221.  
  222.             Console.WriteLine("wprowadz tekst: ");
  223.             text = Console.ReadLine();
  224.  
  225.             Console.WriteLine("sortowanie przez proste wstawianie:");
  226.             Console.WriteLine(ProsteWstawianie(text));
  227.  
  228.             Console.WriteLine("Sortowanie przez wstawianie połówkowe:");
  229.             Console.WriteLine(WstawianiePolowkowe(text));
  230.  
  231.             Console.WriteLine("Sortowanie przez proste wybieranie:");
  232.             Console.WriteLine(ProsteWybieranie(text));
  233.  
  234.             Console.WriteLine("Sortowanie bąbelkowe:");
  235.             Console.WriteLine(SortowanieBabelkowe(text));
  236.  
  237.             Console.WriteLine("Sortowanie koktajlowe:");
  238.             Console.WriteLine(SortowanieKoktailowe(text));
  239.  
  240.             Console.WriteLine("Sortowanie szybkie:");
  241.             Console.WriteLine(SzybkieSortowanie(text));
  242.  
  243.             Console.WriteLine("Sortowanie stogowe:");
  244.             Console.WriteLine(StogoweSortowanie(text));
  245.  
  246.             Console.ReadKey();
  247.         }
  248.     }
  249. }
  250.  
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement