Rafael 🌵
Камиль
new_arr.push(arr.slice(smallest, 1))
Камиль
ворт так хочу добавить элемент в массив и удалить его со старого массива
Rafael 🌵
new_arr.push(arr.splice(t, 1))
Камиль
ага
Камиль
но чет он не особо сортирует
Rafael 🌵
Сортирует?
Камиль
function find_small(arr) {
let small_element = arr[0]
let index_small_element = 0
arr.forEach(function(item, i) {
if (item < small_element) {
small_element = item
index_small_element = i
}
});
return index_small_element
}
function selectionSort(arr) {
let new_arr = []
arr.forEach(function(item) {
smallest = find_small(arr)
new_arr.push(arr.splice(smallest, 1))
})
return new_arr
}
console.log(selectionSort([3,8,2,5,0,1,6]))
Rafael 🌵
Камиль
сорри щас
Камиль
https://jsfiddle.net/s8700geL/
Rafael 🌵
Константин
function find_small(arr) {
return Math.min(...arr)
}
так вроде можно на es6
Камиль
ну это понятно что есть готовые методы
Камиль
я просто читаю книгу по алгоритмам и пытаюсь их реализацию на js перенести
Камиль
щас разбирусь
Rafael 🌵
щас разбирусь
Меня смущает arr.forEach() в selectionSort
Rafael 🌵
Я не могу сходу сказать, как он работает на списке arr переменной длинны
Rafael 🌵
Попробуй переписать через обычный цикл
Камиль
ага я тоже обратил внимание
Rafael 🌵
Rafael 🌵
Потому что список - итерируемый
Rafael 🌵
Но нет, тут нам это не подойдет
Rafael 🌵
Потому что нам нужен индекс, а не значение
Rafael 🌵
Andrey
Rafael 🌵
Сортировка выбором — Википедия
https://ru.m.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D0%BE%D0%BC
Камиль
находит наименьший элемент и пушит в начало нового массива
Дима
[3,8,2,5,0,1,6].sort((a,b)=>a-b))
Rafael 🌵
Камиль
получается так
Rafael 🌵
Минут через 20 доберусь до компа, все напишу
Камиль
https://jsfiddle.net/mcj58pjw/
Rafael 🌵
Камиль
вот так и в итоге он почему то на массиве [3,8,2,5,0,1,6] возвращает 0,1,2,3
Andrey
вот так и в итоге он почему то на массиве [3,8,2,5,0,1,6] возвращает 0,1,2,3
Потому что splice - изменяет исходный массив и потому что алгоритм неправильный, @Fl0pZz скинул опиание этой ссылки, осталось повторить одну из реализаций goo.gl/kBLu4V
Дима
andrei
Дима
Дима
andrei
Что за плагин
Дима
Дима
Я недавно чот угорел по бабель-плагинам, и перепробовал кажется вообще всё интересное, что было в npm 😄
Дима
babel-plugin-tailcall-optimization
Дима
Я правда не припоминаю, чтобы явно пользовался хвостовой рекурсией 🤔 Но пусть будет
Sergey
Дима
😄
Дима
Все про это спрашивают))
Sergey
handlebars или c header?
Дима
flow типы, h.eaders, короче
Дима
Меня реально начала напрягать мешашина из типов и кода в файлах, поэтому когда совсем уже перебор,, то выношу)
Sergey
забавно)
но вполне разумно, я тоже так делал, но в .types.ts (да, это был ts, не кидайтесь яблоками)
Дима
Дима
Ну и, разумеется, у меня там index.h.js, просто расширение можно опускать)
Дима
Sergey
мне симпатизирует flow
ибо просто надстройка над js
а юзать отдельный язык (причем не полный), как то странно
Processor
ts норм штука, он позволяет писать так, чтобы даже просто ввести типы в js, т.е. там можно писать и обычный js код и эта фича при переводе в js не будет ругаться
Processor
Довольно удобно
Sergey
Processor
Каждому своё, но как по мне удобно
Дима
Дима
Плюс практически пустая библиотеа тайпингов, по сравнению с ts
Дима
Медленный и крайне ресурсоёмкий
Anonymous
Я вот думаю, не изучить ли мне, тогда уж, Elm.
Дима
А нормальный интероп с ide только в процессе создания
Дима
Anonymous
Хотелось бы услышать чуть больше, чем просто нет. =))
Ivan
Дима
Причём в самых запущенных случаях у меня HRM в браузере быстрее отрабатывает)
Kirill
flow в вебшторм интергирован
Дима
"вставлен"
Anonymous
Rafael 🌵
вот так и в итоге он почему то на массиве [3,8,2,5,0,1,6] возвращает 0,1,2,3
http://jsbin.com/waboguseya/edit?js,console