Mesaje privateMesaje private   AutentificareAutentificare 

 
[java]Quick sort & Merge sort

 
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Crackers's Official Supporting Forum : HTML, PHP, MySQL, MsSQL
Subiectul anterior :: Subiectul urmator  
Autor Mesaj

GiovanY
Founder
Founder
GiovanY

Data inscrierii: 05/Sep/2008
Mesaje: 1979

MesajTrimis: 01/12/2008 15:59    Titlul subiectului: [java]Quick sort & Merge sort Raspunde cu citat (quote)

Quick sort este in medie, cel mai rapid algorim de sortare ( LE maine cu explicatii pentru incepatori. )


Cod:
import java.io.*;
import java.util.*;
public class QuickSort {
private static final String FileInputName = "QSort.in";
private static final String FileOutputName = "QSort.out";
private static void quickSort(int[] arr, int inf, int sup) {
  if (inf < sup ) {
    int pivot = arr[inf], aux;
    int i = inf + 1, j = sup;
    while ( i <= j ) {
      while ( i <= sup && arr[i] <= pivot )
        i++;
      while ( j >= inf && arr[j] > pivot )
        j--;
      if ( i < j && i <= sup && j >= inf ) {
        aux = arr[i];
        arr[i] = arr[j];
        arr[j] = aux;
        i++;
        j--;
      }
   }
    i--;
    arr[inf] = arr[i];
    arr[i] = pivot;
    quickSort(arr, inf, i - 1);
    quickSort( arr, i + 1, sup);
   }
  }
public static void main(String[] args) throws IOException {
    Scanner sc = null;
    PrintStream out = null;
    try {
        out = new PrintStream(new File(FileOutputName));
        sc = new Scanner(new File(FileInputName));
        List<Integer> list = new ArrayList<Integer>();
        while (sc.hasNextInt()) {
            list.add(sc.nextInt());
          }
        int idx = list.size();
        int arr[] = new int[idx];
        for(int i = 0; i < idx; i++)       
                arr[i] = list.get(i);
        quickSort(arr, 0, idx - 1);
        for(int i = 0, i < idx; i++) {
                out.print(arr[i]);
                out.print(' ');   
        }
      } finally {
        if (sc != null ) {
         sc.close();
       }
        if ( out != null ) {
          out.close();
       }
      }
   }
}

Merge Sort ( Interclasare )
Cod:

import java.io.*;
import java.util.*;
public class MergeSort {
private static final String FileInputName = "MSort.in";
private static final String FileOutputName = "MSort.out";
   private static void mergeSort(int arr[]) {
      if (arr.length <= 1)
         return;
      int v1[] = new int[arr.length / 2];
      int v2[] = new int[arr.length - v1.length];
      System.arraycopy(arr, 0, v1, 0, arr.length/2);
      System.arraycopy(arr, arr.length/2, v2, 0, arr.length - v1.length);
      mergeSort(v1);
      mergeSort(v2);
      int i1 = 0, i2 = 0;
      for (int k = 0; k < v1.length + v2.length;)
            if ((i2>=v2.length) || (i1<v1.length && v1[i1] <= v2.[i2])) {
                  arr[k++] = v1[i1++];
      }
            else {
                  arr[k++] = v2[i2++];
      }
}
public static void main(String[] args) throws IOException {
Scanner sc = null;
PrintStream out = null;
  try {
      out = new PrintStream(new File(FileOutputName));
      sc = new Scanner(new File(FileIntputName));
      List<Integer> list = new ArrayList<Integer>();
      while (sc.hasNextInt()) {
            list.add( sc.nextInt() );
    }
      int arr[] = new int[list.size()];
      for(int i = 0; i < list.size(); i++)
            arr[i] = list.get(i);
      mergeSort(arr);
      for(int i = 0; i < arr.length; i++) {
            out.print(arr[i]);
            out.print(' ');
      }
  } finally {
      if ( sc != null ) {
            sc.close();
      } if (out != null) {
            out.close();
      }
    }
  }
}
Sus
Vezi profilul utilizatorului Trimite mesaj privat Trimite un mesaj
Afiseaza mesajele pentru a le previzualiza:   
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Crackers's Official Supporting Forum : HTML, PHP, MySQL, MsSQL Ora este GMT + 2 ore
Pagina 1 din 1

 
Mergi direct la:  
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum