Arfa

Arfa
Berbagi adalah lebih baik, so...just do it

Kamis, Oktober 10, 2013

Tugas Mata Kuliah: Analisis Algoritma

Data untuk sorting adalah data numerik yang harus dibaca dari stdin, 1 data per baris. Baris pertama berisi total jumlah data (antara 8 s.d. 800000 data)
Hasil sorting diprint ke stdout, seluruh data dalam satu baris, dengan separasi 1 spasi diantara data.
Contoh:
Input:
9
23
43
81
17
74
62
43
39
58
Output:
17 23 39 43 43 58 62 74 81

Algoritma HEAPSORT menggunakan JAVA:



import java.io.*;

public class HeapSort
{
    private static int[] a;
    private static int n;
    private static int left;
    private static int right;
    private static int largest;
   
    public static void buildheap(int []a){
        n=a.length-1;
        for(int i=n/2;i>=0;i--){
            maxheap(a,i);
        }
    }
   
    public static void maxheap(int[] a, int i){
        left=2*i;
        right=2*i+1;
        if(left <= n && a[left] > a[i]){
            largest=left;
        }
        else{
            largest=i;
        }
       
        if(right <= n && a[right] > a[largest]){
            largest=right;
        }
        if(largest!=i){
            exchange(i,largest);
            maxheap(a, largest);
        }
    }
   
    public static void exchange(int i, int j){
        int t=a[i];
        a[i]=a[j];
        a[j]=t;
        }
   
    public static void heapsort(int []a0){
        a=a0;
        buildheap(a);
       
        for(int i=n;i>0;i--){
            exchange(0, i);
            n=n-1;
            maxheap(a, 0);
        }
    }
   
    public static void main(String[] args) {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s,t = null;
       int jum=0;
       try {
        s=reader.readLine();
       // System.out.println(s);
        jum = Integer.parseInt(s);
       }catch (IOException e){
         e.printStackTrace();
       }
       int[] a1= new int[jum];
       if (jum>=8 && jum <=800000)  {
      
           for (int i=0;i               try {
                   t=reader.readLine();
                   a1[i] = Integer.parseInt(t);
                 }catch (IOException e){
                     e.printStackTrace();
               }             
           }
       }
           else {
                 System.out.println("jumlah data 8 s/d 800000 !!");
                 System.exit(0);
                }
      
      
       heapsort(a1);
         for(int i=0;i             System.out.print(a1[i] + " ");
         }
      
        // System.out.println(s);
    
    }
}










CMD PROMPT: setelah dicompile menggunakan Java, bisa kita kita jalankan dengan cmd promt windows, hasilnya seperti berikut:

HeapSort menggunakan JAVA



Tidak ada komentar: