Какой язык программирования выбрать для изучения основ работы с алгоритмами и структурами данных?
Алгоритмы и структуры данных тесно связаны с зубо-дробительными бенчмарками. Как-то отсортировать терабайтный текстовый файл или найти два одинаковых числа в файле из чисел тоже большого размера.
Иногда такие задачи задают на собеседованиях Google и Microsoft. 

И если вы будете изучать эти алгоритмы на js, то вы не сможете продемонстрировать эффективность этих
алгоритмов. Python машина - просто медленная. У нее конечно есть надстройки например над векторной
алгеброй которые позволяют быстро считать рутину вроде циклов над векторами. Но является ли это
программированием Python - чорт его знает. Как по мне - нет. Тут - другая экспертиза нужна.

В структурах данных важно также оценивать память "на глазок".

В этом смысла кодер С++ имеет много преимуществ т.к. он видит и понимает как распределяется память
в узле бинарного дерева например (два указателя по 64 бита + какой-то размер для ключа который тоже
можно посчитать). Какой аллокатор брать? Встроенный в язык new или нужно делать собственный. 
Такой расчет важен для оценки например - применима ли структура данных вообще?
Какой толк от дерева если оно не влезет в оперативную память? А падение памяти в swap - тут-же замедляет
алгоритм в разы.

JS и Python не предоставляют тонкого контроля над памятью. У них своя модель построенная для комфорта
самого процесса разработки а вовсе не для струткуры данных.
Можно. И питон и JS в этом плане норм. Нюанс разве что в том что в том же питоне будет много синтаксического сахара - но вы его можете игнорировать.

C# в целом можно выучить быстренько для ваших потребностей. А вот плюсы оставьте в покое.