Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Сортировка пузырьком


Автор: s1lver 5.12.2008, 18:57
Блин, сортировка меня доконает. smile  

Нужно произвести сортировку методом пузырька.  Подскажите в какую сторону рулить на яваскипте хоть?

Автор: bars80080 5.12.2008, 21:42
как и везде, разницы-то нет

/насколько я помню всплытие - два цикла. хотя могу и наврать/


Код

var a = new Array(345,768,23,6,69,234,876,34678,34);
var al = a.length;
var n = 0;

for(var i = 0; i < al; i++) {
    for(var j = 0; j < al; j++) {
        if(a[i] < a[j]) {
            n = a[j]; a[j] = a[i]; a[i] = n;     
        }
    }
}
for(i = 0; i < al; i++) {
    document.write(a[i] + '<br />')
}

Автор: s1lver 5.12.2008, 21:51
Цитата

как и везде, разницы-то нет

/насколько я помню всплытие - два цикла. хотя могу и наврать/



спасибо большое, smile 

Автор: Michael.de 5.12.2008, 23:55
s1lver: метод, кстати, один из наименее производительных.  >>http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D1%83%D0%B7%D1%8B%D1%80%D1%8C%D0%BA%D0%BE%D0%BC<<

bars80080, будет быстрее (не трогаем отсортированные), если поменять строки с 5 по 11 на следующее:
Код

for (var i=al-1; i>=0; i--){
 for (var j=0; j<i; j++){
  if (a[j] > a[j+1]){
   n = a[j]; a[j] = a[j+1]; a[j+1] = n;     
  }
 }
}
алгоритм честно спёрт с приведённой выше страницы smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)