Я создал новый алгоритм сортировки. Основная концепция этого алгоритма - найти самый маленький и самый большой элемент из данного списка и поменять их на левый угол и правый угол элементов, это будет повторяться до тех пор, пока мы не достигнем среднего элемента.Как найти точную сложность времени и сложность пространства для ниже новых алгоритмов быстрой сортировки
Этот алгоритм выполняется за очень короткое время, чем Quick sort и merge sort. Я хочу убедиться, что этот алгоритм работает лучше, чем Quick sort.
Мой алгоритм код
public class VeryQuickVersion1
{
public static void main(String args[])
{
long current = System.nanoTime();
int[] first = { 8 ,1 ,3 ,2, 6, 5, 7, 4, 12 ,9, 11 ,10 ,14 ,13, 15};
for (int x=0,y=first.length - 1;x<y;x++,y--)
{
int low = 0;
int high = 0;
int li = 0;
int hi = 0;
for (int i = x; i <= y; i++)
{
if (i == x)
{
low = first[i];
high = first[i];
}
if (low > first[i])
{
low = first[i];
li = i;
}
if (high < first[i])
{
high = first[i];
hi = i;
}
}
first[li]=first[x];
first[hi]=first[y];
first[x]=low;
first[y]=high;
}
/* for(int i:first){
System.out.println(i);
}*/
System.out.println(System.nanoTime() - current);
}
}
время, затрачиваемое этого алгоритма: 10148 и время, затрачиваемое алгоритмом быстрой сортировки для того же списка: 17498
Если мы рассмотрим массив с 10 элементами, которые будут выполнены в (10 + 8 + 6 + 4 + 2 + 0) 30, что не равно 10^2 – damodaram
, поэтому мы можем сказать, что временная сложность как n^2 right – damodaram
@damodaram, yes – Haris