144. bmBc[x.charAti] = m - i - 1;
145. }
146. }
147. public int TBMString y{
148. searching
149. int m = x.length, n = y.length;
150. j = u = 0;
151. shift = m;
152. while j=n - m {
153. i = m - 1;
154. while i=0 x.charAti == y.charAti+j{
155. --i;
156. if u = 0 i == m -1 - shift
157. i -= u;
158. }
159. if i 0{
160. System.out.printlnj;
161. return 1;
162. = bmGs[0];
163. u = m - shift;
164. }
165. else {
166. v = m - 1 - i;
167. turboShift = u - v;
168. bcShift = bmBc[y. charAti+j] - m + 1 + i;
169. shift = Math.maxturboShift, bcShift;
170. shift = Math.maxshift, bmGs[i];
171. if shift == bmGs[i]
172. u = Math.minm - shift, v;
173. else {
174. if turboShift bcShift
175. shift = Math.maxshift , u + 1;
176. u = 0;
177. }
178. }
179. j += shift;
180. } return 0;
181. }
182. }
4. Pemanggilan Algoritma String Matching on Ordered Alphabet
1. package com.mardiah.dictionary;
2. import android.database.Cursor;
3. import android.database.sqlite.SQLiteDatabase;
4. import android.os.Bundle;
5. import android.support.annotation.Nullable;
6. import android.support.v4.app.Fragment;
7. import android.view.LayoutInflater;
8. import android.view.View;
9. import android.view.ViewGroup;
10. import android.widget.Button;
11. import android.widget.EditText;
12. import android.widget.ListAdapter;
13. import android.widget.ListView;
14. import android.widget.SimpleAdapter;
15. import android.widget.Toast;
16. import java.util.ArrayList;
17. import java.util.HashMap;
18. public class SMUA_Fragments extends Fragment {
19. Nullable
Universitas Sumatera Utara
20. Button btneksekusi;
21. ArrayListHashMapString, String list_data;
22. HashMapString, String map;
23. ListView lv2;
24. EditText cari;
25. String pat = , Fisika=, Arti =;
26. Override
27. public View onCreateViewLayoutInflater inflater, ViewGroup
container, Bundle savedInstanceState { 28.
View v = inflater.inflateR.layout.smua_fragments, container, false;
29. btneksekusi =
Buttonv.findViewByIdR.id.buttonCarismua; 30.
lv2 = ListViewv.findViewByIdR.id.listing; 31.
cari = EditTextv.findViewByIdR.id.Caritbm; 32.
list_data = new ArrayList; 33.
btneksekusi.setOnClickListenernew View.OnClickListener {
34. Override
35. public void onClickView view {
36. pat = cari.getText.toString;
37. DatabaseHelper helper = new
DatabaseHelperSMUA_Fragments.this.getContext; 38.
SQLiteDatabase database = helper.getReadableDatabase;
39. Cursor cursor = database.querydb_baru_2, new
String[]{fisika, arti}, null, null, null, null, fisika; 40.
int ketemu = 0, i = 0; 41.
int urutan = 0; 42.
SMUA c = new SMUA; 43.
try { 44.
list_data.clear; 45.
long t = System.currentTimeMillis; 46.
if cursor = null { 47.
cursor.moveToFirst; 48.
do { 49.
Fisika= cursor.getString0; 50.
Arti = cursor.getString1; 51.
if pat == null{ 52.
Toast.makeTextSMUA_Fragments.this.getContext, Masukan Kata Yang Di Cari, Toast.LENGTH_LONG.show; }
53. if pat.length = Fisika.length {
54. ketemu = c.SMOApat.toUpperCase,
pat.length, Fisika.toUpperCase, Fisika.length; 55.
if ketemu == 1 { 56.
urutan++; 57.
map = new HashMap; 58.
map.puturutan, Integer.toStringurutan;
59. map.putFisika,
Integer.toStringurutan + . + Fisika; 60.
map.putArti, Arti; 61.
list_data.addmap; 62.
i += 1; 63.
} 64.
} 65.
} while cursor.moveToNext; 66.
} 67.
long t2 = System.currentTimeMillis - t; 68.
if i == 0 {
Universitas Sumatera Utara
69. Toast.makeTextSMUA_Fragments.this.getContext, Kata tidak
ditemukan Running Time : + t2 + ms, Toast.LENGTH_SHORT.show;
70. } else {
71. ListAdapter adapt = new
SimpleAdapterSMUA_Fragments.this.getContext, list_data, R.layout.list_row, new String[]{Fisika, Arti},
72. new int[]{R.id.fsk, R.id.arti};
73. lv2.setAdapteradapt;
74. Toast.makeTextSMUA_Fragments.this.getContext, Running Time : +
t2 + ms, Toast.LENGTH_LONG.show; 75.
} 76.
catch Exception e { 77.
Toast.makeTextSMUA_Fragments.this.getContext, e.getMessage, Toast.LENGTH_SHORT.show;
78. }
79. }
80. };
81. return v;
82. }
83. private class SMUA {
84. int i, ip, j, jp, k, p;
85. public void nextMaximalSuffixString x, int m, int i,
int j, int k, int p { 86.
char a, b; 87.
while j + k m { 88.
a = x.charAti + k; 89.
b = x.charAtj + k; 90.
if a == b 91.
if k == p { 92.
j += p; 93.
k = 1; 94.
} else 95.
++k; 96.
else if a b { 97.
j += k; 98.
k = 1; 99.
p = j - i; 100.
} else { 101.
i = j; 102.
++j; 103.
k = p = 1; 104.
} 105.
} 106.
} 107.
public int SMOAString x, int m, String y, int n { 108.
ip = -1; 109.
i = j = jp = 0; 110.
k = p = 1; 111.
while j = n - m { 112.
while i + j n i m x.charAti == y.charAti + j
113. ++i;
114. if i == 0 {
115. ++j;
116. ip = -1;
117. jp = 0;
118. k = p = 1;
Universitas Sumatera Utara
119. } else {
120. if i = m return 1;
121. System.out.printlnj;
122. nextMaximalSuffixy + j, i + 1, ip, jp, k,
p; 123.
if ip 0 || ip p java.util.Arrays.equalsy + j.substring0, ip + 1.toCharArray,
y + j + p.substring0, ip + 1.toCharArray { 124.
j += p; 125.
i -= p; 126.
if i 0 127.
i = 0; 128.
else { 129.
ip = -1; 130.
jp = 0; 131.
k = p = 1; 132.
} 133.
} else { 134.
j += Math.maxip + 1, Math.mini - ip - 1, jp + 1 + 1;
135. i = jp = 0;
136. ip = -1;
137. k = p = 1;
138. }
139. }
140. }
141. return 0;
142. }
143. }
144. }
5. Pemanggilan Halaman Algoritma Pencarian