예제 #1
0
        /// <summary>
        /// Selection Sort Algorithm [Time: O(n^2), Space: O(1)]
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public SortResults Sort(List <int> data)
        {
            var results = new SortResults();
            var watch   = System.Diagnostics.Stopwatch.StartNew();

            for (var i = 0; i < data.Count - 1; i++)
            {
                var max = i;
                for (var j = i + 1; j < data.Count; j++)
                {
                    if (data[j] < data[max])
                    {
                        max = j;
                    }
                }
                if (max != i)
                {
                    var tmp = data[max];
                    data[max] = data[i];
                    data[i]   = tmp;
                }
            }

            watch.Stop();
            results.Ticks = watch.ElapsedTicks;

            results.SortedData = data;
            return(results);
        }
예제 #2
0
        /// <summary>
        /// Heap Sort Algorithm [Time: O(n*Logn), Space: O(n)]
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public SortResults Sort(List <int> data)
        {
            var results = new SortResults();
            var length  = data.Count;

            var watch = System.Diagnostics.Stopwatch.StartNew();

            //rearrange array to heap array sort
            for (var i = length / 2 - 1; i >= 0; i--)
            {
                Heapify(data, length, i);
            }

            //the largest element is first, move it to the end
            // reheapify everything (except the last) to bring the largest at the first position
            for (int i = length - 1; i >= 0; i--)
            {
                var tmp = data[0];
                data[0] = data[i];
                data[i] = tmp;

                Heapify(data, i, 0);
            }

            watch.Stop();
            results.Ticks      = watch.ElapsedTicks;
            results.SortedData = data;
            return(results);
        }
예제 #3
0
 private void PrintGrid(string title, SortResults u, SortResults r, SortResults s)
 {
     PrintRow(title,
              u.Ticks.ToString("00000000"),
              r.Ticks.ToString("00000000"),
              s.Ticks.ToString("00000000")
              );
     PrintLine();
 }
예제 #4
0
        /// <summary>
        /// Quick Sort Algorithm [Time: O(n*logn), Space: O(n)]
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public SortResults Sort(List <int> data)
        {
            var results = new SortResults();
            var watch   = System.Diagnostics.Stopwatch.StartNew();

            _Sort(data, 0, data.Count - 1);

            watch.Stop();
            results.Ticks = watch.ElapsedTicks;

            results.SortedData = data;
            return(results);
        }
예제 #5
0
 // Token: 0x06000D10 RID: 3344 RVA: 0x000307C8 File Offset: 0x0002E9C8
 private void SetSubscriptionParameter(SubscriptionParameters parameters)
 {
     this.SubscriptionParameters = parameters;
     if (parameters.SortBy != null)
     {
         this.sortBy = SortResults.ToXsoSortBy(parameters.SortBy);
     }
     if (parameters.Filter != ViewFilter.All)
     {
         this.viewFilter = parameters.Filter;
     }
     if (parameters.ClutterFilter != ClutterFilter.All)
     {
         this.clutterFilter = parameters.ClutterFilter;
     }
     if (!string.IsNullOrEmpty(parameters.FromFilter))
     {
         this.fromFilter = parameters.FromFilter;
     }
 }
예제 #6
0
    /// <summary>
    /// Bubble Sort Algorithm [Time: O(n^2), Space: O(1)]
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    public SortResults Sort(List <int> data)
    {
        var results = new SortResults();
        var watch   = System.Diagnostics.Stopwatch.StartNew();

        for (var i = 0; i < data.Count; i++)
        {
            for (var j = 0; j < data.Count - 1; j++)
            {
                if (data[j] > data[j + 1])
                {
                    var tmp = data[j];
                    data[j]     = data[j + 1];
                    data[j + 1] = tmp;
                }
            }
        }

        watch.Stop();
        results.Ticks = watch.ElapsedTicks;

        results.SortedData = data;
        return(results);
    }
        protected void Page_Load(object sender, EventArgs e)
        {
            // SET THE DEFAULT PAGE SIZE AND ADD A NEW OPTION BASED ON MaxItems parameter value if needed
            if (!Page.IsPostBack)
            {
                CategoryBreadCrumbs1.Visible = this.DisplayBreadCrumbs;
            }

            InitializePageSize();

            if (IsValidCategory())
            {
                string eventTarget = Request["__EVENTTARGET"];
                if (string.IsNullOrEmpty(eventTarget) || !eventTarget.EndsWith("PageSizeOptions"))
                {
                    PageSizeOptions.ClearSelection();
                    ListItem item = PageSizeOptions.Items.FindByValue(_pageSize.ToString());
                    if (item != null)
                    {
                        item.Selected = true;
                    }
                }

                if (string.IsNullOrEmpty(eventTarget) || !eventTarget.EndsWith("SortResults"))
                {
                    string sortOption = Request.QueryString["s"];
                    if (!string.IsNullOrEmpty(sortOption))
                    {
                        SortResults.ClearSelection();
                        ListItem item = SortResults.Items.OfType <ListItem>().FirstOrDefault(x => string.Compare(x.Value, sortOption, StringComparison.InvariantCultureIgnoreCase) == 0);
                        if (item != null)
                        {
                            item.Selected = true;
                        }
                    }
                }

                if (!string.IsNullOrEmpty(eventTarget))
                {
                    if (eventTarget.EndsWith("PageSizeOptions") || eventTarget.EndsWith("SortResults"))
                    {
                        string url = Request.RawUrl;
                        if (url.Contains("?"))
                        {
                            url = Request.RawUrl.Substring(0, Request.RawUrl.IndexOf("?"));
                        }
                        url += "?s=" + SortResults.SelectedValue;
                        url += "&ps=" + _pageSize.ToString();
                        Response.Redirect(url);
                    }
                }


                Caption.Text = this.DefaultCaption;

                if (_Category != null)
                {
                    // use category name if no default name is specified
                    if (string.IsNullOrEmpty(Caption.Text))
                    {
                        Caption.Text = _Category.Name;
                    }

                    CategoryBreadCrumbs1.CategoryId = this.CategoryId;

                    if (!string.IsNullOrEmpty(_Category.Summary) && ShowSummary)
                    {
                        CategorySummary.Text = _Category.Summary;
                    }

                    if (!string.IsNullOrEmpty(_Category.Description) && ShowDescription)
                    {
                        CategoryDescriptionPanel.Visible = true;
                        CategoryDescription.Text         = _Category.Description;
                    }
                    else
                    {
                        CategoryDescriptionPanel.Visible = false;
                    }
                }
                else
                {
                    // IT IS ROOT CATEGORY
                    CategoryBreadCrumbs1.CategoryId = this.CategoryId;
                    if (ShowSummary)
                    {
                        CategorySummary.Text = DefaultCategorySummary;
                    }
                }

                if (_Category != null)
                {
                    int count = WebpageDataSource.CountForCategory(_Category.Id, true, true);
                    if (count > 0)
                    {
                        _currentPageIndex = AlwaysConvert.ToInt(Request.QueryString["p"]);
                        if (_pageSize == 0)
                        {
                            _lastPageIndex = 0;
                        }
                        else
                        {
                            _lastPageIndex = ((int)Math.Ceiling(((double)count / (double)_pageSize))) - 1;
                        }

                        CatalogNodeList.DataSource = WebpageDataSource.LoadForCategory(_Category.Id, true, true, SortResults.SelectedValue, _pageSize, (_currentPageIndex * _pageSize));
                        CatalogNodeList.DataBind();
                        int startRowIndex = (_pageSize * _currentPageIndex);
                        int endRowIndex   = startRowIndex + _pageSize;
                        if (endRowIndex > count || endRowIndex == 0)
                        {
                            endRowIndex = count;
                        }
                        if (count == 0)
                        {
                            startRowIndex = -1;
                        }
                        ResultIndexMessage.Text = string.Format(ResultIndexMessage.Text, (startRowIndex + 1), endRowIndex, count);
                        ResultIndexMessage.Text = string.Format(ResultIndexMessage.Text, (startRowIndex + 1), endRowIndex, count);
                        BindPagingControls();
                    }
                    else
                    {
                        phEmptyCategory.Visible = true;
                    }

                    AbleCommerce.Code.PageVisitHelper.RegisterPageVisit(_Category.Id, CatalogNodeType.Category, _Category.Name);
                }
            }
        }
예제 #8
0
        public SortResults Sort(SortedTreeNode <IdType, DataType> other, bool testing = false)
        {
            SortResults topLevelResult = Tree.CompareLoadOrder(this, other);

            SortResults midLevelResult = SortResults.NoSortPreference;

            switch (topLevelResult)
            {
            case SortResults.DuplicateId:
            case SortResults.CircularDependency:
            case SortResults.CircularLoadOrder:
                return(topLevelResult);

            case SortResults.NoSortPreference:

                if (LoadBefore != null && LoadAfter != null)
                {
                    SortResults testAfterResult  = SortAfter(other, true);
                    SortResults testBeforeResult = SortBefore(other, true);

                    if (testAfterResult > SortResults.NoSortPreference)
                    {
                        return(testAfterResult);
                    }

                    if (testBeforeResult > SortResults.NoSortPreference)
                    {
                        return(testBeforeResult);
                    }

                    midLevelResult = testAfterResult > testBeforeResult
                            ? testAfterResult
                            : testBeforeResult;
                }
                else if (LoadBefore == null && LoadAfter != null)
                {
                    SortResults testAfterResult = SortAfter(other, true);

                    if (testAfterResult > SortResults.NoSortPreference)
                    {
                        return(testAfterResult);
                    }

                    midLevelResult = testAfterResult;
                }
                else if (LoadAfter == null && LoadBefore != null)
                {
                    SortResults testBeforeResult = SortBefore(other, true);

                    if (testBeforeResult > SortResults.NoSortPreference)
                    {
                        return(testBeforeResult);
                    }

                    midLevelResult = testBeforeResult;
                }

                if (midLevelResult == SortResults.NoSortPreference)
                {
                    midLevelResult = SortAfter(other, testing);
                }

                break;

            case SortResults.SortBefore:
                midLevelResult = SortBefore(other, testing);
                break;

            case SortResults.SortAfter:
                midLevelResult = SortAfter(other, testing);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            if (!testing)
            {
                switch (midLevelResult)
                {
                case SortResults.SortBefore:
                    NodesAddedBefore++;
                    break;

                case SortResults.SortAfter:
                    NodesAddedAfter++;
                    break;
                }
            }

            return(midLevelResult);
        }