Skip to content

Instantly share code, notes, and snippets.

@adeds
Created July 13, 2018 16:10
Show Gist options
  • Save adeds/56fa5b6ecb5f61455042598d789d0011 to your computer and use it in GitHub Desktop.
Save adeds/56fa5b6ecb5f61455042598d789d0011 to your computer and use it in GitHub Desktop.
How to get Average from array with Divide And Conquer Method (DNC)
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