K-означает, что для инициализации ++ требуется O (n * k). Это достаточно быстро для малых k и больших n, но если вы выберете k слишком большое, это займет некоторое время. Это примерно так же дорого, как одна итерация (медленного) варианта Ллойда, поэтому, как правило, использование kmeans ++ окупается.
Ваша реализация хуже, по крайней мере, O (n * k²), потому что она выполняет ненужные пересчеты. И он, вероятно, всегда выбирает ту же точку, что и следующий центр.
Обратите внимание, что у вас также есть только инициализация, но не фактические значения kmeans.