Advertisement
Kame3

Shaker (cocktail) сортирање lab5.2

Dec 12th, 2020
1,152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.95 KB | None | 0 0
  1. Shaker (cocktail) сортирање Problem 2 (0 / 0)
  2.  
  3. Дадена е низа со N природни броеви. Треба да се сортира низата со помош на таканареченото shaker (cocktail) сортирање. Ова сортирање е варијација на сортирањето со меурчиња (bubble sort) со тоа што во секоја итерација низата се изминува два пати. Во првото поминување најмалиот елемент се поместува на почетокот на низата, а при второто најголемиот елемент се поместува на крајот. Во првиот ред од влезот даден е бројот на елементи во низата N, а во вториот ред се дадени броевите. На излез треба да се испечати низата по секое изминување во посебен ред.
  4.  
  5. Име на класата: ShakerSort
  6.  
  7.  
  8. import java.io.BufferedReader;
  9. import java.io.IOException;
  10. import java.io.InputStreamReader;
  11.  
  12. public class ShakerSort {
  13.  
  14.     static void shakerSort(int a[], int n)
  15.     {  
  16.         int minCounter = 0;
  17.         int maxCounter = 0;
  18.         boolean done = false;
  19.         for (int j=0; j < (a.length+1)/2; ++j) {
  20.  
  21.         done = true;    
  22.  
  23.         //bubbleSortMin
  24.         for (int i = a.length-1; i > minCounter; --i) {
  25.                 if (a[i] < a[i-1]) {
  26.                     int temp = a[i];
  27.                     a[i] = a[i-1];
  28.                     a[i-1] = temp;
  29.                     done = false;
  30.                 }
  31.             }
  32.         ++minCounter;
  33.         write(a);
  34.  
  35.         //bubbleSortMax
  36.         for (int i= maxCounter; i < a.length -1; ++i ) {
  37.             if (a[i] > a[i+1]) {
  38.                 int temp = a[i];
  39.                 a[i] = a[i+1];
  40.                 a[i+1] = temp;
  41.                 done = false;
  42.             }
  43.         }
  44.         ++maxCounter;
  45.         write(a);
  46.         if (done)
  47.             break;
  48.         }
  49.     }
  50.  
  51.     static void write(int [] a) {
  52.         int i;
  53.         for (i=0; i<a.length; ++i)
  54.             System.out.print(a[i] + " ");
  55.         System.out.println();
  56.     }
  57.  
  58.  
  59.     public static void main(String[] args) throws IOException{
  60.         int i;
  61.         BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in));
  62.         String s = stdin.readLine();
  63.         int n = Integer.parseInt(s);
  64.  
  65.         s = stdin.readLine();
  66.         String [] pom = s.split(" ");
  67.         int [] a = new int[n];
  68.         for(i=0;i<n;i++)
  69.             a[i]=Integer.parseInt(pom[i]);
  70.         shakerSort(a,n);
  71.     }
  72. }
  73.  
  74.  
  75.  
  76. Sample input
  77.  
  78. 8
  79. 6 10 13 5 8 17 2 5
  80.  
  81. Sample output
  82.  
  83. 2 6 10 13 5 8 17 5
  84. 2 6 10 5 8 13 5 17
  85. 2 5 6 10 5 8 13 17
  86. 2 5 6 5 8 10 13 17
  87. 2 5 5 6 8 10 13 17
  88. 2 5 5 6 8 10 13 17
  89. 2 5 5 6 8 10 13 17
  90. 2 5 5 6 8 10 13 17
  91.  
  92.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement