Cod sursa(job #2288818)

Utilizator thinkphpAdrian Statescu thinkphp Data 23 noiembrie 2018 22:52:26
Problema Sortare prin comparare Scor 20
Compilator java Status done
Runda Arhiva educationala Marime 2.6 kb
import java.util.Scanner;
import java.io.*;

public class Main {

       public static void __sort(int arr[]) {

              int i, 

                  j, 

                  finished = 0, 

                  swapped, 

                  n = arr.length - 1;
              
              while(finished == 0) {

                    swapped = 0;

                    for(i = 0; i < n - 1; i++) {

                        if(arr[i] > arr[i+1]) {

                           int holder = arr[i];

                               arr[i] = arr[i+1];

                               arr[i+1] = holder;

                               swapped = 1;      
                        }
                    } 

		    if(swapped == 1) n = n - 1;

                       else finished = 1;
              } 
       }

       public static void __csort(int arr[]) {

              double shrinkFactor = 1.3;

              int size = arr.length - 1, gap = size;
            
              boolean swapped = true;
               
              while(gap > 1 || swapped) {

                    swapped = false;

                    if(gap > 1) gap = (gap * 10) / 13;

                    for(int i = 0; i + gap < size; i++) {

                        if(arr[i] > arr[i+gap]) {

                           int holder = arr[i];

                               arr[i] = arr[i+gap];

                               arr[i+gap] = holder;

                               swapped = true;  
                        }  
                    }
              }   
       }

       public static void main(String[] args) {

              int n;

              int[] arr;

              String FIN = "algsort.in",

                     FOUT = "algsort.out";  

              try {
                      Scanner fin = new Scanner(new File( FIN ));

                      n = fin.nextInt();

                      arr = new int[n+1]; 

                      int k = 0;                     
 
                      while(fin.hasNext()) {

                            int i = fin.nextInt();

                            arr[k++] = i;
                      }  
                                             
                      __csort( arr );                     

                      final OutputStream os = new FileOutputStream( FOUT );

                      final PrintStream ps = new PrintStream( os );                       

                      for (int i = 0; i < n; i++) {

                           ps.print(arr[i]);

                           ps.print(" ");
                      }

                      ps.close();

              } catch(Exception e) {

              } 
       }
}