裸搜-SWC(Search Without Clothing,亦稱Nude Searching)
這是一種在計算機中解決一些數據規模不大的問題時用的方法。根據不同地區有不同的說法,譬如“暴力搜尋法”、“窮舉法”等。
這種搜尋辦法的具體思路就是枚舉各個不同的值,從中找到一個答案。下面我們來分析兩個最簡單的例子。
1、查找一個數
在一格資料庫裡面存儲了很多數據,為了找到這個數據,可以使用裸搜法。具體實現為:從資料庫的第一個值開始枚舉,當找到需要的值後,返回它,並退出搜尋。
這種方法往往只適應數據規模小的問題。如果數據量大了,就不能使用這種方法,否則會導致所需時間過多。比如,騰訊QQ一個號碼為999999999用戶在登入時,不可能從10000到999999999一直搜上去,這樣的話也就沒人會用QQ了。
2、給一串數字排序
在給一串數字排序的時候,裸搜法顯得十分簡單。但是當數據規模大了時,也不能運用它。
用裸搜的思想去將n個數排成降序,就是先從這串數中找到一個最大的值,放在第一個位;再從這串數里找出第二大的值,放在第二位;……最後從中找出第n大的值,放在第n位。這樣就可以將其排成降序了。這個在信息學中也叫做“冒泡排序法”。
總結
裸搜在解決數據規模不大的問題時往往能夠節約許多編程時間,而且思維複雜度也不高。可是在解決數據規模大的問題時,就要用到許多最佳化的算法。比如上面說到的排序,就有“快速排序”、“堆排序”、“二分排序”、“隨機排序”等多種更快的排序法,可是編寫這些程式所需要的時間和代碼量就大大超過了裸搜的排序。因此我們在使用裸搜法的時候,要注意數據規模,若太大,則應該使用最佳化的算法。