Tutorial Membuat Program Pencarian dengan Java

Rabu, 29 Mei 2013

Dalam membuat program pencarian layaknya google ini, hal utama yang harus dibuat adalah membuat class RBT sebagai berikut,

public class RB_Tree {
static node root;    
public RB_Tree(){
root=null;
}
public void insert(String n,File add){
node x=root;
node y=null;
while(x!=null){
y=x;
if(x.nilai.compareTo(n)>0)
x=x.kiri;
else if(x.nilai.equalsIgnoreCase(n)){
x.incJumlah(add);
x.sort();
return ;
}
else
x=x.kanan;
}

node baru=new node(n);
baru.incJumlah(add);
baru.parent=y;
if(y==null)
root=baru;
else if(baru.nilai.compareTo(y.nilai)<0 div="">
y.kiri=baru;
else
y.kanan=baru;
baru.kiri=null;
baru.kanan=null;
baru.warna=Color.red;
Fix_Insert(baru);
}
public void Fix_Insert(node baru){
while(baru!=root&&baru.parent.warna==Color.red){
if(baru.parent==baru.parent.parent.kiri){
node y=baru.parent.parent.kanan;
if(y!=null&&y.warna==Color.red){
baru.parent.warna=Color.black;
y.warna=Color.black;
baru.parent.parent.warna=Color.red;
baru=baru.parent.parent;
}
else {
if(baru==baru.parent.kanan){
baru=baru.parent;
L_Rotation(baru);
}
baru.parent.warna=Color.black;
baru.parent.parent.warna=Color.red;
R_Rotation(baru.parent.parent);
}
}
else{
node y=baru.parent.parent.kiri;
if(y!=null&&y.warna==Color.red){
baru.parent.warna=Color.black;
y.warna=Color.black;
baru.parent.parent.warna=Color.red;
baru=baru.parent.parent;
}
else{
if (baru == baru.parent.kiri) {
baru=baru.parent;
R_Rotation(baru);
}
baru.parent.warna=Color.black;
baru.parent.parent.warna=Color.red;
L_Rotation(baru.parent.parent);
}
}
}
root.warna=Color.black;
}
public void L_Rotation(node x){
node y=x.kanan;
x.kanan=y.kiri;
if(y.kiri!=null)
y.kiri.parent=x;
y.parent=x.parent;
if(x.parent==null)
root=y;
else if(x==x.parent.kiri)
x.parent.kiri=y;
else
x.parent.kanan=y;
y.kiri=x;
x.parent=y;
}
public void R_Rotation(node x){
node y=x.kiri;
x.kiri=y.kanan;
if(y.kanan!=null)
y.kanan.parent=x;
y.parent=x.parent;
if(x.parent==null)
root=y;
else if(x==x.parent.kanan)
x.parent.kanan=y;
else
x.parent.kiri=y;
y.kanan=x;
x.parent=y;
}

Kemudian dibuatlah method pencarian seperti berikut ,

public ArrayList searchkata (String kata){
node temp=root;
ArrayList x = new ArrayList ();
while(temp!=null){
if(temp.nilai.equalsIgnoreCase(kata)){
return temp.alamat;
}
else if(temp.nilai.compareTo(kata)>0){
temp=temp.kiri;
}
else{
temp=temp.kanan;
}
}
return x;
}

public ArrayList searchkalimat (String kalimat){
ArrayList h_head = new ArrayList ();
ArrayList h_file = new ArrayList ();
ArrayList h_nilai = new ArrayList ();
String [] kata = kalimat.split(" ");
for(int i=0;i
ArrayList t = searchkata(kata[i]);
for(int j=0;j
if(h_file.contains(t.get(j).alamat)){
if(!kata[i].equalsIgnoreCase(h_head.get(h_file.indexOf(t.get(j).alamat)))){
h_nilai.set(h_file.indexOf(t.get(j).alamat), h_nilai.get((h_file.indexOf(t.get(j).alamat)))+1); 
}
else
h_nilai.set(h_file.indexOf(t.get(j).alamat), h_nilai.get((h_file.indexOf(t.get(j).alamat)))+0.2); 
}
else{
h_head.add(kata[i]);
h_file.add(t.get(j).alamat);
h_nilai.add(0.2);
}
//
}
}
for (int i = 1; i < h_file.size(); i++){
   int j = i;
   String tempH = h_head.get(i);
   File tempF = h_file.get(i);
   Double tempD = h_nilai.get(i);
  
   while ((j > 0) && (h_nilai.get(j-1) < tempD)){
   h_head.set(j,h_head.get(j-1));
   h_file.set(j,h_file.get(j-1));
   h_nilai.set(j,h_nilai.get(j-1));
   j--;
   }
   h_head.set(j,tempH);
   h_file.set(j,tempF);
   h_nilai.set(j,tempD);
   }
return h_file;
}

Penggabungan method ini dengan method pembacaan file (tidak ada disini) dan dengan GUI maka akan menghasilkan pencarian document layaknya google. Semoga bermanfaat!

3 komentar:

  1. Unknown mengatakan...:

    boss itu caranya harus dengan 1 class atau lebih untuk script di atas

  1. naokohaage mengatakan...:

    Paddy Power Casino and Hotel - Mapyro
    Find addresses, 군산 출장안마 see photos and 광양 출장안마 ratings for Paddy Power Casino and Hotel in Council Bluffs, IA. Find reviews, hours, directions, phone numbers and more for 광주광역 출장마사지 Paddy Power Casino  Rating: 영천 출장샵 4 · 구미 출장샵 ‎4 reviews

Posting Komentar