コード例 #1
0
        public void Sort <T>(UvmArray <T> col)
        {
            if (col == null || col.Count() < 2)
            {
                return;
            }
            // 快排
            int pivot        = 1;
            T   pivotValue   = col.Get(pivot);
            var lessItems    = new UvmArray <T>();
            var greaterItems = new UvmArray <T>();

            for (int i = 1; i <= col.Count(); i++)
            {
                if (i == pivot)
                {
                    continue;
                }
                var item = col.Get(i);
                if (pivotValue == null)
                {
                    greaterItems.Add(item);
                }
                else if (item == null)
                {
                    lessItems.Add(item);
                }
                else if (string.Compare(item.ToString(), pivotValue.ToString()) < 0)
                {
                    lessItems.Add(item);
                }
                else
                {
                    greaterItems.Add(item);
                }
            }
            this.Sort(lessItems);
            this.Sort(greaterItems);
            var result = new UvmArray <T>();

            for (var i = 1; i <= lessItems.Count(); i++)
            {
                result.Add(lessItems.Get(i));
            }
            result.Add(pivotValue);
            for (var i = 1; i <= greaterItems.Count(); i++)
            {
                result.Add(greaterItems.Get(i));
            }
            for (var i = 1; i <= result.Count(); i++)
            {
                col.Set(i, result.Get(i));
            }
        }
コード例 #2
0
 public void Append <T>(UvmArray <T> col, T value)
 {
     col.Add(value);
 }