Advertisement
DearOohDeer

Sortowanie - Listy Int

Mar 28th, 2022
1,248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.30 KB | None | 0 0
  1. //Main
  2. package Package;
  3.  
  4. public class Main {
  5.     public static void main(String[] args)
  6.     {
  7.        StrategyForSorting ObjStategy = new StrategyForSorting();
  8.        ObjStategy.Menu();
  9.     }
  10. }
  11.  
  12. //StrategyForSorting
  13. package Package;
  14.  
  15. import java.util.ArrayList;
  16. import java.util.InputMismatchException;
  17. import java.util.List;
  18. import java.util.Scanner;
  19.  
  20. public class StrategyForSorting extends BaseSort
  21. {
  22.     void Menu() {
  23.         List<Integer> ListToSort = new ArrayList<Integer>();
  24.         InputNumbers(ListToSort);
  25.         int[] ArrayToSort = ListToSort.stream().mapToInt(i->i).toArray();
  26.         int ChoosenOption;
  27.         do {
  28.             ChoosenOption = MenuChoice();
  29.             switch (ChoosenOption) {
  30.                 case 1:
  31.                     new BubbleSort().Sort(ArrayToSort);
  32.                     Display(ArrayToSort);
  33.                     break;
  34.                 case 2:
  35.                     new InsertionSort().Sort(ArrayToSort);
  36.                     Display(ArrayToSort);
  37.                     break;
  38.                 case 3:
  39.                     new MergeSort().Sort(ArrayToSort);
  40.                     Display(ArrayToSort);
  41.                     break;
  42.                 case 4:
  43.                     new ShuffleUnsort().Sort(ArrayToSort);
  44.                     Display(ArrayToSort);
  45.                     break;
  46.                 case 5:
  47.                     break;
  48.             }
  49.         }while(ChoosenOption != 5);
  50.     }
  51.  
  52.     void Display(int ArrayToSort[])
  53.     {
  54.         for(int Number : ArrayToSort)
  55.         {
  56.             System.out.print(Number + ", ");
  57.         }
  58.         System.out.println("");
  59.     }
  60.  
  61.     void InputNumbers(List<Integer> ListToSort)
  62.     {
  63.             boolean InputOK;
  64.             Scanner UserInput = new Scanner(System.in);
  65.         do {
  66.             InputOK = true;
  67.             ListToSort.clear();
  68.             System.out.println("Podaj kolejno liczby które chcesz po sortowac. Nalezy je podzielic za pomoca \' , \'");
  69.             String StrUserInput = UserInput.nextLine();
  70.             String[] GivenNumbers = StrUserInput.split(" , ");
  71.             try {
  72.                 for (String GivenNumber : GivenNumbers) {
  73.                     ListToSort.add(Integer.parseInt(GivenNumber));
  74.                 }
  75.             } catch (Exception e) {
  76.                 InputOK = false;
  77.                 System.out.println("Podano nieprawidlowe dane.");
  78.             }
  79.         }while (!InputOK);
  80.     }
  81.  
  82.     int MenuChoice() {
  83.         boolean InputOK;
  84.         int ChoosenOption = 0;
  85.         do {
  86.             InputOK = true;
  87.             System.out.println("1.Sortowanie Bombelkowe");
  88.             System.out.println("2.Sortowanie Przez Wstawianie");
  89.             System.out.println("3.Sortowanie Przez Scalanie");
  90.             System.out.println("4.Rozsortowanie");
  91.             System.out.println("5.Wyjscie");
  92.             System.out.println("Wprowadz numer opcji menu: ");
  93.             try {
  94.                 Scanner UserInput = new Scanner(System.in);
  95.                 ChoosenOption = Integer.parseInt(UserInput.nextLine()); //Zamiana String do Int
  96.             } catch (InputMismatchException | NumberFormatException ex) // Sprawdzenie
  97.             {
  98.                 System.out.println("To nie jest liczba.");
  99.                 InputOK = false;
  100.             }
  101.         }while (!InputOK && ChoosenOption > 5 || ChoosenOption < 0 );
  102.         return ChoosenOption;
  103.     }
  104. }
  105.  
  106. //BaseSort
  107. package Package;
  108.  
  109. import java.util.List;
  110.  
  111. public abstract class BaseSort {
  112.     ISort ISortObj;
  113.  
  114.     public void Sort(int ListToSort[])
  115.     {
  116.         ISortObj.Sort(ListToSort);
  117.     }
  118. }
  119.  
  120. //Isort
  121. package Package;
  122.  
  123. import java.util.List;
  124.  
  125. public interface ISort {
  126.     void Sort(int ListToSort[]);
  127. }
  128.  
  129. //BubbleSort
  130. package Package;
  131.  
  132. import java.util.List;
  133.  
  134. public class BubbleSort implements ISort{
  135.  
  136.     @Override
  137.     public void Sort(int ListToSort[])
  138.     {
  139.             int Lenght = ListToSort.length;
  140.             int i, j, t;
  141.             for (i = 0; i < Lenght; i++)
  142.             {
  143.                 for (j = i + 1; j < Lenght; j++)
  144.                 {
  145.                     if (ListToSort[j] < ListToSort[i])
  146.                     {
  147.                         t = ListToSort[i];
  148.                         ListToSort[i] = ListToSort[j];
  149.                         ListToSort[j] = t;
  150.                     }
  151.                 }
  152.             }
  153.         }
  154. }
  155.  
  156. //InsertionSort
  157. package Package;
  158.  
  159. import java.util.List;
  160.  
  161. public class InsertionSort implements ISort{
  162.  
  163.     @Override
  164.     public void Sort(int ListToSort[])
  165.     {
  166.         int Lenght = ListToSort.length;
  167.         for (int j = 1; j < Lenght; j++) {
  168.             int Key = ListToSort[j];
  169.             int i = j-1;
  170.             while ( (i > -1) && ( ListToSort [i] > Key ) ) {
  171.                 ListToSort [i+1] = ListToSort [i];
  172.                 i--;
  173.             }
  174.             ListToSort[i+1] = Key;
  175.         }
  176.     }
  177. }
  178.  
  179. //MergeSort
  180. package Package;
  181.  
  182. import java.util.List;
  183.  
  184. public class MergeSort implements ISort{
  185.  
  186.     @Override
  187.     public void Sort(int ListToSort[])
  188.     {
  189.         int n = ListToSort.length;
  190.         mergeSort(ListToSort,0,n-1);
  191.     }
  192.  
  193.     void merge(int a[], int beg, int mid, int end)
  194.     {
  195.         int i, j, k;
  196.         int n1 = mid - beg + 1;
  197.         int n2 = end - mid;
  198.  
  199.         /* temporary Arrays */
  200.         int LeftArray[] = new int[n1];
  201.         int RightArray[] = new int[n2];
  202.  
  203.         /* copy data to temp arrays */
  204.         for (i = 0; i < n1; i++)
  205.             LeftArray[i] = a[beg + i];
  206.         for (j = 0; j < n2; j++)
  207.             RightArray[j] = a[mid + 1 + j];
  208.  
  209.         i = 0; /* initial index of first sub-array */
  210.         j = 0; /* initial index of second sub-array */
  211.         k = beg;  /* initial index of merged sub-array */
  212.  
  213.         while (i < n1 && j < n2)
  214.         {
  215.             if(LeftArray[i] <= RightArray[j])
  216.             {
  217.                 a[k] = LeftArray[i];
  218.                 i++;
  219.             }
  220.             else
  221.             {
  222.                 a[k] = RightArray[j];
  223.                 j++;
  224.             }
  225.             k++;
  226.         }
  227.         while (i<n1)
  228.         {
  229.             a[k] = LeftArray[i];
  230.             i++;
  231.             k++;
  232.         }
  233.  
  234.         while (j<n2)
  235.         {
  236.             a[k] = RightArray[j];
  237.             j++;
  238.             k++;
  239.         }
  240.     }
  241.  
  242.     void mergeSort(int a[], int beg, int end)
  243.     {
  244.         if (beg < end)
  245.         {
  246.             int mid = (beg + end) / 2;
  247.             mergeSort(a, beg, mid);
  248.             mergeSort(a, mid + 1, end);
  249.             merge(a, beg, mid, end);
  250.         }
  251.     }
  252. }
  253.  
  254. //ShuffleUnsort
  255. package Package;
  256.  
  257. import java.util.List;
  258. import java.util.Random;
  259.  
  260. public class ShuffleUnsort implements ISort{
  261.  
  262.     @Override
  263.     public void Sort(int ListToSort[])
  264.     {
  265.         // Creating object for Random class
  266.         Random RandomObj = new Random();
  267.         int Lenght = ListToSort.length;
  268.  
  269.  
  270.         // Starting from the last element and swapping one by one.
  271.         for (int FirstC = Lenght-1; FirstC > 0; FirstC--) {
  272.  
  273.             // Pick a random index from 0 to i
  274.             int SecondC = RandomObj.nextInt(FirstC+1);
  275.  
  276.             // Swap array[i] with the element at random index
  277.             int Temp = ListToSort[FirstC];
  278.             ListToSort[FirstC] = ListToSort[SecondC];
  279.             ListToSort[SecondC] = Temp;
  280.         }
  281.     }
  282. }
  283.  
  284.  
  285.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement