// public static JobHandle Sort<T>(NativeArray<T> array, JobHandle parentHandle)
        // where T : unmanaged, IComparable<T> {
        //     return NativeSortExtension.SortJob(array, parentHandle);
        // }



        private static JobHandle MergeSort <T>(NativeArray <T> array, SortRange range, JobHandle parentHandle) where T : unmanaged, IComparable <T>
        {
            if (range.Length <= QUICKSORT_THRESHOLD_LENGTH)
            {
                // Use quicksort
                return(new QuicksortJob <T>()
                {
                    array = array,
                    left = range.left,
                    right = range.right
                }.Schedule(parentHandle));
            }

            int middle = range.Middle;

            SortRange left       = new SortRange(range.left, middle);
            JobHandle leftHandle = MergeSort(array, left, parentHandle);

            SortRange right       = new SortRange(middle + 1, range.right);
            JobHandle rightHandle = MergeSort(array, right, parentHandle);

            JobHandle combined = JobHandle.CombineDependencies(leftHandle, rightHandle);

            return(new Merge <T>()
            {
                array = array,
                first = left,
                second = right
            }.Schedule(combined));
        }
Ejemplo n.º 2
0
        public void RemoveRange(int Index)
        {
            int       num1;
            ArrayList list1 = new ArrayList();

            for (SortRange range1 = this.topRange; range1.Ranges.FindLast(Index, out num1, this.lineHitTest); range1 = (SortRange)range1.Ranges[num1])
            {
                if (range1.Index >= 0)
                {
                    list1.Add(range1.Index);
                }
            }
            if (list1.Count > 0)
            {
                this.BeginUpdate();
                try
                {
                    for (int num2 = list1.Count - 1; num2 >= 0; num2--)
                    {
                        this.RemoveAt((int)list1[num2]);
                    }
                }
                finally
                {
                    this.EndUpdate();
                }
            }
        }
Ejemplo n.º 3
0
        protected int FindRangeIndex(int Index, IComparer Comparer)
        {
            int       num2;
            SortRange range1 = this.topRange;
            int       num1   = -1;

            while (range1.Ranges.FindLast(Index, out num2, Comparer))
            {
                range1 = (SortRange)range1.Ranges[num2];
                num1   = range1.Index;
            }
            return(num1);
        }
Ejemplo n.º 4
0
        protected IRange FindRange(int Index, IComparer Comparer)
        {
            int       num1;
            SortRange range1 = this.topRange;
            IRange    range2 = null;

            while (range1.Ranges.FindLast(Index, out num1, Comparer))
            {
                range1 = (SortRange)range1.Ranges[num1];
                range2 = range1.Range;
            }
            return(range2);
        }
Ejemplo n.º 5
0
        public int GetRanges(IList Ranges, int Index)
        {
            int num1;

            Ranges.Clear();
            SortRange range1 = this.topRange;

            while (range1.Ranges.FindLast(Index, out num1, this.lineHitTest))
            {
                range1 = (SortRange)range1.Ranges[num1];
                if (range1.Range != null)
                {
                    Ranges.Add(range1.Range);
                }
            }
            return(Ranges.Count);
        }
Ejemplo n.º 6
0
        // Module to sort data in Descending order
        void Descending_Sort()
        {
            // Accessing a worksheet that is currently active
            Worksheet sheet = gridDesktop1.GetActiveWorksheet();

            // Creating SortRange object
            SortRange sr = new SortRange(sheet, range.StartRow, range.StartColumn,
                                         range.EndRow - range.StartRow + 1,
                                         range.EndColumn - range.StartColumn + 1,
                                         SortOrientation.SortTopToBottom, true);

            // Sorting data in the specified column in descending order
            sr.Sort(range.StartColumn, Aspose.Cells.GridDesktop.SortOrder.Descending);

            // Redrawing cells of the Grid
            gridDesktop1.Invalidate();
        }
Ejemplo n.º 7
0
        // Module to sort data in Descending order
        void Descending_Sort()
        {
            // ExStart:DescendingSort
            // Accessing a worksheet that is currently active
            Worksheet sheet = gridDesktop1.GetActiveWorksheet();

            // Creating SortRange object
            SortRange sr = new SortRange(sheet, range.StartRow, range.StartColumn,
                         range.EndRow - range.StartRow + 1,
                         range.EndColumn - range.StartColumn + 1,
                         SortOrientation.SortTopToBottom, true);

            // Sorting data in the specified column in descending order
            sr.Sort(range.StartColumn, Aspose.Cells.GridDesktop.SortOrder.Descending);

            // Redrawing cells of the Grid
            gridDesktop1.Invalidate();
            // ExEnd:DescendingSort
        }
Ejemplo n.º 8
0
        protected void SortLevels()
        {
            this.topRange.Clear();
            ArrayList list1  = new ArrayList();
            SortRange range2 = this.topRange;

            for (int num1 = 0; num1 < this.Count; num1++)
            {
                IRange    range3 = (IRange)this[num1];
                SortRange range1 = new SortRange(range3, num1);
                while ((list1.Count > 0) && !range2.Contains(range3))
                {
                    range2 = (SortRange)list1[list1.Count - 1];
                    list1.RemoveAt(list1.Count - 1);
                }
                list1.Add(range2);
                range2.Add(range1);
                range2 = range1;
            }
        }