Всем привет. Я новичок. Пытался и хотел создать свой алгоритм сортировки. Не знаю какая тут сложность и хороший ли он, но меня мучит другой вопрос — почему последние 3 цифры не сортируются в этом виде проверки (где второй if). Ведь там 23 сравнивается с 5 и 23 не меньше 5 а все равно срабатывает как true. Если эту проверку чуток переделать (второй код), то все заработает. Но я не понимаю почему так происходит. Гуру алгоритмики — подскажите в чем дело если вам не лень копаться в этом.
let arr = [5, 1, 2, 4, 21, 5, 21, 3]
const sort = arr => {
let checker = true
do {
arr.forEach((item, index, arr) => {
if (item > arr[index + 1]) {
arr.splice(index, 2, arr[index + 1], arr[index])
}
})
if (
arr.every((item, index) => {
console.log(item); // 1, 2, 4, 5, 5, 21, 3, 21
console.log(arr[index + 1]); // 2, 4, 5, 5, 21, 3, 21, undefined
return index < index.length ? item <= arr[index + 1] : true // Из-за этой проверки не работает (ниже пример ее переделки на то что работает)
})
) {
checker = false
}
} while (checker)
return arr
}
console.log(sort(arr)) // 1, 2, 4, 5, 5, 21, 3, 21
Переделка:
return index > 0 ? item >= arr[index - 1] : true // Переделка