ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Алгоритм сортировки выборки в Javascript

Алгоритм сортировки выборки в javascript

Сортировка выбора – это алгоритм сортировки со сложностью со временем O(n2). Он работает очень медленно на больших наборах данных.

Как работает сортировка выборки?

Сортировка выбора начинается с выбора минимального элемента и сравнивает его с несортированным массивом.

Образец :

1.) [ 4,3,5,2 ]

2.) [ 2,3,5,4 ].

Массив с окончательной сортировкой [2,3,4,5 ]

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

function selectionSort(arr){
  return arr
}

 

Теперь нам нужно два цикла, один для выбора минимального элемента, а второй сравнивает его с оставшейся частью несортированного массива и обновляет минимальный элемент.

function selectionSort(arr) {
    for (var i = 0; i < arr.length; i++) {
        let min = i; //  хранение индекса минимального элемента
        for (var j = i + 1; j < arr.length; j++) {
            if (arr[min] > arr[j]) {
                min = j; // обновление индекса минимального элемента
            }
        }
    }
    return arr
}

 

Последний шаг нам нужно поменять местами.

function selectionSort(arr) {
    for (var i = 0; i < arr.length; i++) {
        let min = i; //  хранение индекса минимального элемента
        for (var j = i + 1; j < arr.length; j++) {
            if (arr[min] > arr[ j ]) {
                min = j; // обновление индекса минимального элемента
            }
        }
        if (i !== min) {
            let temp = arr[ i ];
            arr[ i ] = arr[min];
            arr[min] = temp;
        }
    }
    return arr
}

 

Можно даже использовать разрушение массива для замены элементов.

function selectionSort(arr) {
    for (var i = 0; i < arr.length; i++) {
        let min = i; //  хранение индекса минимального элемента
        for (var j = i + 1; j < arr.length; j++) {
            if (arr[min] > arr[j]) {
                min = j; // обновление индекса минимального элемента
            }
        }
        if (i !== min) {
            [arr[ i ],arr[min]]= [arr[min],arr[ i ]];
        }
    }
    return arr
}

 

Вторая реализация с использованием метода map

function selectionSort(arr, length = arr.length) {
    arr.map((e, i) => {
        let min = i; //  хранение индекса минимального элемента
        for (let j = i + 1; j < length; j++) {
            if (arr[min] > arr[j]) {
                min = j; // обновление индекса минимального элемента
            }
        }
        if (i !== min) {
            [arr[ i ],arr[min]]= [arr[min],arr[ i ]]; // замена
        }
    })
    return arr
}

console.log(selectionSort([3,1,5,0,-4,44,9,20]));
//[-4,0,1,3,5,9,20,44]
Exit mobile version