Re: другой TreeSort
От: _DAle_ Беларусь  
Дата: 23.05.05 13:59
Оценка:
Здравствуйте, uniqSnk, Вы писали:

S>я надеюсь что это не плагиат, потому что этот алгоритм я придумал сам (из-за того что я сначала не правильно понял оригинальный TreeSort)

S>эта сортировка обгоняет QuickSort при выриантах значений меньше чем 5000... при 5000 скорости сравниваются
S>конечно сортировка черпаками быстрее но просто кому нить будет интересно
S>и так, вот алгоритм (написан на C#)
S>
S>class sealed Sort
S>{
S>    private Sort(){}
S>    public static void TreeSort(int[] a)
S>        {
S>            if (a.Length<2)
S>                return;
S>            Node root=new Node(a[0]);
S>            for(int i=1; i<a.Length; i++)
S>                AddNode(root,a[i]);
S>            int k=0;
S>            ComputeNode(root,a,ref k);
S>        }
S>        private static void ComputeNode(Node nd, int[] a, ref int k)
S>        {
S>            if (nd.min!=null)
S>                ComputeNode(nd.min,a,ref k);
S>            for(int i=0; i<nd.cnt; i++)
S>                a[k++]=nd.val;
S>            if(nd.max!=null)
S>                ComputeNode(nd.max,a,ref k);
S>        }
S>        private static void AddNode(Node nd, int value)
S>        {
S>            if (nd.val>value)
S>                if (nd.min==null)
S>                    nd.min=new Node(value);
S>                else
S>                    AddNode(nd.min,value);
S>            else if (nd.val==value)
S>                nd.cnt++;
S>            else
S>                if (nd.max==null)
S>                    nd.max=new Node(value);
S>                else
S>                    AddNode(nd.max,value);
S>        }
S>        class Node
S>        {
S>            public int val, cnt=1;
S>            public Node min, max;
S>            public Node(int value)
S>            {
S>                val=value;
S>            }
S>        }

S>}
S>


Может я чего-то не понял, но сложность этой сортировки в худшем случае O(n^2). Например, если взять возрастающую последовательность, то это поисковое дерево вытянется в список. А обгон quick sort получается, видимо, только из-за хранения количества одинаковых чисел и большого количества одинаковых чисел в тестах.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.