0
我必須在電子表格中進行搜索,第一列是沒有@部分的電子郵件列表。例如Google Apps腳本的二進制搜索算法
aadb.asdf
asdfsd.asdf
asdfsad.asdfsdf
asdfsdf.asdfsdf
下面是我的二進制搜索代碼:
function testSubmit() {
var email = "aadb.asdf";
var s = SpreadsheetApp.openById("spreadsheetID");
var sheet = s.getSheets()[0];
var emailColumn = sheet.getRange(1,1, sheet.getLastRow()).getValues();
var l1 = 0;
var h1 = Number(sheet.getLastRow()) - 1;
while(h1 >= l1) {
var middle = parseInt((l1 + h1)/2);
var item = emailColumn[middle][0].valueOf();
Logger.log("Binary -> middle : " + middle + " data : " + emailColumn[middle][0]);
if(item == email) {
}
if(item.charAt(0) < email.charAt(0)) {
l1 = middle + 1;
}
if(item.charAt(0) > email.charAt(0)) {
h1 = middle - 1;
}
}
}
但我的腳本會被卡住,並給出了消息是下面的截圖。
然而,當我運行線性搜索,它工作正常。我的腳本有問題嗎?
for (var row in emailColumn) {
for (var col in emailColumn[row]) {
if(email == emailColumn[row][col]) {
Logger.log("row : " + row + " col : " + col + " data : " + emailColumn[row][col]);
}
}
}
顯示的信息不是錯誤信息。等多少錢?你看過腳本執行記錄嗎? (請參閱https://developers.google.com/apps-script/troubleshooting)。 –
附加的圖像不是錯誤消息。 @Ruben是正確的。除此之外,你還收到其他消息嗎?你的預期結果是什麼?到目前爲止,請嘗試閱讀[documentation](https://developers.google.com/apps-script/troubleshooting#debugging)。它討論了一切,包括調試。 –
我從來沒有說過這是一個錯誤,但它不應該發生,因爲二進制搜索應該比線性需要更少的時間。但在我的腳本中,線性搜索很快,而二進制似乎在某個時間點卡住了。我仔細檢查我的腳本錯誤,但我沒有看到任何 –