湖濱散記部落格的樹心幽徑[login][主頁]
559:20200102用JavaScript設計二分搜尋法bs01.htm

REF:20191122用DevC++來編寫循序搜尋法與二分搜尋法程式

 

(1-1)在notepad輸入如下JS程式碼並存檔在桌面為bs01.htm

(2) 用firefox開啟bs01.htm,瀏覽結果如下:

二分搜尋法
待搜尋陣列a[]=1,5,7,9,13,18,26


數字k=1的搜尋結果如下:
L=0 a[L]=1, R=6 a[R]=26, M=3 a[M]=9
k=1 < a[M]=9 往小的那一半找 => L=0 R=2

L=0 a[L]=1, R=2 a[R]=7, M=1 a[M]=5
k=1 < a[M]=5 往小的那一半找 => L=0 R=0

L=0 a[L]=1, R=0 a[R]=1, M=0 a[M]=1
找到一筆匹配在 M=0 a[M]=1


數字k=4的搜尋結果如下:
L=0 a[L]=1, R=6 a[R]=26, M=3 a[M]=9
k=4 < a[M]=9 往小的那一半找 => L=0 R=2

L=0 a[L]=1, R=2 a[R]=7, M=1 a[M]=5
k=4 < a[M]=5 往小的那一半找 => L=0 R=0

L=0 a[L]=1, R=0 a[R]=1, M=0 a[M]=1
k=4 > a[M]=1 往大的那一半找 => L=1 R=0

因1=L > R=0 => [L,R]的數字區間不存在,故找不到k=4


數字k=18的搜尋結果如下:
L=0 a[L]=1, R=6 a[R]=26, M=3 a[M]=9
k=18 > a[M]=9 往大的那一半找 => L=4 R=6

L=4 a[L]=13, R=6 a[R]=26, M=5 a[M]=18
找到一筆匹配在 M=5 a[M]=18


數字k=26的搜尋結果如下:
L=0 a[L]=1, R=6 a[R]=26, M=3 a[M]=9
k=26 > a[M]=9 往大的那一半找 => L=4 R=6

L=4 a[L]=13, R=6 a[R]=26, M=5 a[M]=18
k=26 > a[M]=18 往大的那一半找 => L=6 R=6

L=6 a[L]=26, R=6 a[R]=26, M=6 a[M]=26
找到一筆匹配在 M=6 a[M]=26

 

(2-1)在notepad輸入如下JS程式碼並存檔在桌面為bs02.htm

 

(4)用firefox開啟bs02.htm,瀏覽結果如下:

數字k=111的搜尋結果如下:
L=0 a[L]=0, R=10006 a[R]=29999, M=5003 a[M]=14852 往小的那一半找
L=0 a[L]=0, R=5002 a[R]=14850, M=2501 a[M]=7440 往小的那一半找
L=0 a[L]=0, R=2500 a[R]=7437, M=1250 a[M]=3645 往小的那一半找
L=0 a[L]=0, R=1249 a[R]=3644, M=624 a[M]=1808 往小的那一半找
L=0 a[L]=0, R=623 a[R]=1797, M=311 a[M]=868 往小的那一半找
L=0 a[L]=0, R=310 a[R]=866, M=155 a[M]=445 往小的那一半找
L=0 a[L]=0, R=154 a[R]=444, M=77 a[M]=201 往小的那一半找
L=0 a[L]=0, R=76 a[R]=199, M=38 a[M]=87 往大的那一半找
L=39 a[L]=90, R=76 a[R]=199, M=57 a[M]=145 往小的那一半找
L=39 a[L]=90, R=56 a[R]=140, M=47 a[M]=117 往小的那一半找
L=39 a[L]=90, R=46 a[R]=114, M=42 a[M]=104 往大的那一半找
L=43 a[L]=109, R=46 a[R]=114, M=44 a[M]=110 往大的那一半找
L=45 a[L]=111, R=46 a[R]=114, M=45 a[M]=111
找到一筆匹配在 M=45 a[M]=111


數字k=444的搜尋結果如下:
L=0 a[L]=0, R=10006 a[R]=29999, M=5003 a[M]=14852 往小的那一半找
L=0 a[L]=0, R=5002 a[R]=14850, M=2501 a[M]=7440 往小的那一半找
L=0 a[L]=0, R=2500 a[R]=7437, M=1250 a[M]=3645 往小的那一半找
L=0 a[L]=0, R=1249 a[R]=3644, M=624 a[M]=1808 往小的那一半找
L=0 a[L]=0, R=623 a[R]=1797, M=311 a[M]=868 往小的那一半找
L=0 a[L]=0, R=310 a[R]=866, M=155 a[M]=445 往小的那一半找
L=0 a[L]=0, R=154 a[R]=444, M=77 a[M]=201 往大的那一半找
L=78 a[L]=207, R=154 a[R]=444, M=116 a[M]=320 往大的那一半找
L=117 a[L]=321, R=154 a[R]=444, M=135 a[M]=372 往大的那一半找
L=136 a[L]=376, R=154 a[R]=444, M=145 a[M]=415 往大的那一半找
L=146 a[L]=420, R=154 a[R]=444, M=150 a[M]=433 往大的那一半找
L=151 a[L]=435, R=154 a[R]=444, M=152 a[M]=437 往大的那一半找
L=153 a[L]=441, R=154 a[R]=444, M=153 a[M]=441 往大的那一半找
L=154 a[L]=444, R=154 a[R]=444, M=154 a[M]=444
找到一筆匹配在 M=154 a[M]=444


數字k=1818的搜尋結果如下:
L=0 a[L]=0, R=10006 a[R]=29999, M=5003 a[M]=14852 往小的那一半找
L=0 a[L]=0, R=5002 a[R]=14850, M=2501 a[M]=7440 往小的那一半找
L=0 a[L]=0, R=2500 a[R]=7437, M=1250 a[M]=3645 往小的那一半找
L=0 a[L]=0, R=1249 a[R]=3644, M=624 a[M]=1808 往大的那一半找
L=625 a[L]=1812, R=1249 a[R]=3644, M=937 a[M]=2714 往小的那一半找
L=625 a[L]=1812, R=936 a[R]=2712, M=780 a[M]=2233 往小的那一半找
L=625 a[L]=1812, R=779 a[R]=2230, M=702 a[M]=2031 往小的那一半找
L=625 a[L]=1812, R=701 a[R]=2022, M=663 a[M]=1922 往小的那一半找
L=625 a[L]=1812, R=662 a[R]=1920, M=643 a[M]=1860 往小的那一半找
L=625 a[L]=1812, R=642 a[R]=1859, M=633 a[M]=1834 往小的那一半找
L=625 a[L]=1812, R=632 a[R]=1833, M=628 a[M]=1817 往大的那一半找
L=629 a[L]=1821, R=632 a[R]=1833, M=630 a[M]=1822 往小的那一半找
L=629 a[L]=1821, R=629 a[R]=1821, M=629 a[M]=1821 往小的那一半找 故找不到1818


數字k=2626的搜尋結果如下:
L=0 a[L]=0, R=10006 a[R]=29999, M=5003 a[M]=14852 往小的那一半找
L=0 a[L]=0, R=5002 a[R]=14850, M=2501 a[M]=7440 往小的那一半找
L=0 a[L]=0, R=2500 a[R]=7437, M=1250 a[M]=3645 往小的那一半找
L=0 a[L]=0, R=1249 a[R]=3644, M=624 a[M]=1808 往大的那一半找
L=625 a[L]=1812, R=1249 a[R]=3644, M=937 a[M]=2714 往小的那一半找
L=625 a[L]=1812, R=936 a[R]=2712, M=780 a[M]=2233 往大的那一半找
L=781 a[L]=2234, R=936 a[R]=2712, M=858 a[M]=2486 往大的那一半找
L=859 a[L]=2489, R=936 a[R]=2712, M=897 a[M]=2610 往大的那一半找
L=898 a[L]=2611, R=936 a[R]=2712, M=917 a[M]=2668 往小的那一半找
L=898 a[L]=2611, R=916 a[R]=2665, M=907 a[M]=2648 往小的那一半找
L=898 a[L]=2611, R=906 a[R]=2642, M=902 a[M]=2627 往小的那一半找
L=898 a[L]=2611, R=901 a[R]=2626, M=899 a[M]=2616 往大的那一半找
L=900 a[L]=2623, R=901 a[R]=2626, M=900 a[M]=2623 往大的那一半找
L=901 a[L]=2626, R=901 a[R]=2626, M=901 a[M]=2626
找到一筆匹配在 M=901 a[M]=2626



select id,article_id,topic,text from lt_articles_text where article_id =559; ok. update lt_articles set num_reads=num_reads +1 where id=559; ok.