Какой тип алгоритма сортировки больше всего похож на этот код?(если есть). - PullRequest
0 голосов
/ 23 октября 2018

Я изучаю программирование (с использованием Javascript), и в качестве теста я решил найти способ написать алгоритм для сортировки и массива строк, вот что я придумал.

// test of a sorting algorithm 
var steps = 0;
var steps2 = 0;
var array  = ['assa', 'erer', 'qwqw', 'ggdffdghdg', 'sdsdethhhghg', 'aaaaaa', 'gthfyjfdsfdf', 'qwqwwere', 'jygyghhf', '1', '0', '345', 'sfsdsddsfsf', 'eee3ew33', '1dwd', 'ddd2'];


var array2  = ['erer', 'jygyghhf', '1', '0', '345', 'sfsdsddsfsf', 'eee3ew33', '1dwd', 'ddd2'];
console.log('array before sort');
console.log(array);
function simpleSort(array) {
    let length = array.length;
    let currentPos = 1;
    while (currentPos < length) {
        let pivot = 0;
        do {
            let currentValue = array[currentPos];
            if (currentValue > array[pivot]) {

                array.splice(currentPos, 1);
                array.splice(pivot, 0, currentValue);
                steps++;
            }
            steps2++;   
            pivot++;

        }
        while (currentPos > pivot);
        currentPos++;
    }
    console.log(array);
    console.log('steps = ' + steps);
    console.log('steps2 = ' + steps2);
}
console.log('********************');
console.log('array after sort');
simpleSort(array);

console.log('********************');
console.log('array after sort with array.sort() and array.reverse() buit in functions');
array.sort();
console.log(array.reverse());

Чтотип алгоритма сортировки будет больше всего походить на этот код и что будет большим O этого

1 Ответ

0 голосов
/ 23 октября 2018

Алгоритм аналогичен приведенному ниже, поэтому он имеет структуру, аналогичную алгоритму сортировки O(n^2).

function simpleSort(array) {
    for (var currentPos = 1; currentPos < array.length; currentPos++) {
        for (var pivot = 0; pivot < currentPos; pivot++) {
            let currentValue = array[currentPos];
            if (currentValue > array[pivot]) {
                array.splice(currentPos, 1);
                array.splice(pivot, 0, currentValue);
            }
        }
    }
}

С вводом [6, 3, 5, 4, 1, 8, 6, 3] после каждой итерации:

6   3 5 4 1 8 6 3
6 3   5 4 1 8 6 3
6 5 3   4 1 8 6 3
6 5 4 3   1 8 6 3
6 5 4 3 1   8 6 3
8 6 5 4 3 1   6 3
8 6 6 5 4 3 1   3
8 6 6 5 4 3 3 1 

Это показывает, что левая сторона сортируется на каждом шаге и увеличивается в размере на одну каждую итерацию.Это то же самое, что и сортировка вставки .

Условие if может быть истинным только один раз для каждой итерации, потому что после сращивания currentValue станет равным наименьшему значению воставил массив и сравнивал с большими значениями каждый раз.Так что он имеет O(n^2) сложность времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...