Я занимался подготовкой вопросов к собеседованию и в процессе предложил небольшой вариант Bubble Sort, который включает в себя то, что я узнал о бинарном поиске, во внутренний цикл подкачки.Таким образом, временная сложность приводит к примерно 50% -ному снижению по сравнению с O (n ^ 2).Я предполагаю, что мой вопрос - я трачу свое время на Bubble?Должен ли я просто изучить Bucket Sort и покончить с этим?
Я тестировал со следующим вводом.
int[] nums = { 9878, 1, 4, 8, 5, 7, 88, 1, 54, 2, 2, 9878, 5, 7, 3, 11, 1, 4, 8, 5, 7, 88, 1, 54, 2, 2, 5, 7, 3, 11 };
public static int[] sortWBinary(int[] ar)
{
var swapped = true;
for (int i = 0; i < ar.Length && swapped; i++)
{
swapped = false;
for (int k = i, j = ar.Length - 1; k < ar.Length - i - 1 && j > 0; k++, j--)
{
if (ar[k] > ar[k + 1])
{
var temp = ar[k];
ar[k] = ar[k + 1];
ar[k + 1] = temp;
swapped = true;
}
if (ar[j - 1] > ar[j])
{
var temp = ar[j - 1];
ar[j - 1] = ar[j];
ar[j] = temp;
swapped = true;
}
}
}
return ar;
}
VS.
public static int[] sortWoBinary(int[] ar)
{
var swapped = true;
for (int i = 0; i < ar.Length && swapped; i++)
{
swapped = false;
for (int k = 0; k < ar.Length - i - 1; k++)
{
if (ar[k] > ar[k + 1])
{
var temp = ar[k];
ar[k] = ar[k + 1];
ar[k + 1] = temp;
swapped = true;
}
}
}
return ar;
}