2016-11-14 3 views
0

Мне нужно выполнить поиск в электронной таблице, а в первом столбце - список писем без @ part. НапримерАлгоритм бинарного поиска для Google Apps Script

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; 
    } 
    } 

} 

Но мой сценарий застревает и дает сообщение скриншот ниже.

enter image description here

Однако, когда я бегу линейный поиск, он отлично работает. Есть ли проблема с моим скриптом?

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]); 
    } 
    } 
    } 
+1

Показанное сообщение не является сообщением об ошибке. Сколько стоит ждать? Вы просматриваете сценарий выполнения сценария? (см. https://developers.google.com/apps-script/troubleshooting). –

+1

Изображение прилагается не является сообщением об ошибке. @Ruben верен. Кроме этого, вы получаете какое-либо другое сообщение? Каков ваш ожидаемый результат? На данный момент попробуйте прочитать [документацию] (https://developers.google.com/apps-script/troubleshooting#debugging). В нем обсуждалось все, включая отладку. –

+0

Я никогда не говорил, что это ошибка, но этого не должно быть, потому что бинарный поиск занимает меньше времени, чем линейный. Но в моем сценарии линейный поиск быстрый, в то время как двоичный файл кажется застрявшим в какой-то момент. Я дважды проверяю свой скрипт на ошибку, но я не вижу никаких –

ответ

0

Посмотрите на ваше время заявления ... это может быть, что h1 и l1 в данный момент больше не изменяется, и, таким образом, она застревает в петлю.

Смежные вопросы