Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2014
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.79 KB | None | 0 0
  1. public class Main
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.     String[] A = {"","a","aa","aaa"};
  6.         System.out.println(test_quickselect(A,2));
  7.     }
  8.     // Notkun: String s = test_quickselect(a,k);
  9.     // Fyrir:  a er strengjafylki í einhverri röð , k er heiltala,
  10.     //         0 <= k < a.length.
  11.     // Eftir:  Búið er að umraða a á einhvern hátt og s inniheldur
  12.     //         strenginn sem væri í sæti k ef a væri raðað í
  13.     //         vaxandi röð.
  14.     public static String test_quickselect( String[] a, int k )
  15.     {
  16.         quickselect(a, 0, a.length, k);
  17.         return a[k];
  18.     }
  19.  
  20.     // Notkun: quickselect( a,i,j,k )
  21.     // Fyrir:  a[i..j-1] er svæði í strengjafylkinu a.
  22.     // Eftir:  Búið er að raða a[i..j-1] í vaxandi röð.
  23.     public static void quickselect( String[] a, int i, int j,int k )
  24.     {
  25.         if( j - i == 1 ) return;
  26.         // Víxlum fyrst á miðstakinu
  27.         // og fremsta stakinu.
  28.         int m = i + (j-i)/2;
  29.         String p = a[m];
  30.         a[m] = a[i];
  31.         a[i] = p;
  32.  
  33.         int r = i+1;
  34.  
  35.         for( int s = r; s != j; s++)
  36.         {
  37.             // |p| <p | >=p | ?? |
  38.             //  i   r    s     j
  39.             if( a[s].compareTo(p) < 0 )
  40.             {
  41.                 String temp = a[s];
  42.                 a[s] = a[r];
  43.                 a[r] = temp;
  44.                 r++;
  45.             }
  46.         }
  47.         // |p| < p | >=p |
  48.         //  i    r    j
  49.         r--;
  50.         // |p| < p | >=p |
  51.         //  i    r    j
  52.         a[i] = a[r];
  53.         a[r] = p;
  54.         // | <p |p| >=p |
  55.         //   i   r   j
  56.         if( k < r && i != r )
  57.         {
  58.             quickselect(a, i, r, k);
  59.         }
  60.         if( k > r && r + 1 != j )
  61.         {
  62.             quickselect(a, r+1, j, k);
  63.         }
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement