Created
July 13, 2018 16:10
-
-
Save adeds/56fa5b6ecb5f61455042598d789d0011 to your computer and use it in GitHub Desktop.
How to get Average from array with Divide And Conquer Method (DNC)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Scanner; | |
public class Means{ | |
public int jumlah = 0; //deklarasi jumlah awal | |
public Means(){ | |
//deklarasi Constructor | |
} | |
public static void main(String[] args) { | |
Means mean = new Means(); //pemanggilan Contructer sebagai objek baru | |
double [] arr =null ; //deklarasi array list data awal kosong | |
arr = mean.masukData(arr); // input data dengan method masukData dengan parameter array arr | |
mean.tampilData(arr); //output data dengan method tampilData dengan parameter array arr | |
System.out.println("\n panjang data : "+arr.length); //tampilkan panjang data | |
double rata = mean.rerata(arr,0 ,arr.length-1, arr.length); //deklarasi float data memanggil method rekursif rerata dengan parameter array arr dan panjang data array | |
System.out.println("\nrata-rata data = " + rata); // output rata-rata | |
} | |
private void tampilData(double arr[]){ | |
//method menampilkan data data ke dalam array | |
for (int i=0; i<jumlah;i++ ) { | |
System.out.print("\n Data ke "+i+" : "); | |
System.out.println(arr[i]); | |
} | |
} | |
private double[] masukData(double arr[]){ | |
//method memasukkan data dengan library scanner | |
Scanner keyboard = new Scanner(System.in); //deklarasi scanner sebagai objek keyboard | |
System.out.print("Masukkan jumlah data : "); | |
jumlah = keyboard.nextInt(); //masukkan variabel jumlah | |
arr = new double[jumlah]; //deklarasi array list data dengan ukuran dimensi sebesar jumlah | |
for(int i =0; i<jumlah ; i++){ | |
System.out.print("Masukkan Data ke "+i+" : "); | |
arr[i] = keyboard.nextDouble(); //masukkan nilai dari indeks arr urut sesuai jumlah | |
} | |
return arr; // nilai balik method | |
} | |
private double rerata(double[] A, int tail, int head, double pjgData) { | |
if (tail==head) { | |
//base case, jika selesei pada data tunggal | |
return A[tail]/pjgData; //nilai balik data dibagi jumlah data array | |
} | |
int mid = (tail+head)/2; //pencarian nilai median | |
double avLeft = rerata(A, tail, mid,pjgData); //pembagian kiri, dengan nilai akhir adalah mid | |
double avRight = rerata(A, mid+1, head, pjgData); // pembagian kanan dengan nilai awal adalah mid | |
double average = (avLeft+avRight); //nilai penyatuan kanan dan kiri | |
return average; //nilai balik rata-rata | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment