保持关于排序算法的统计

时间:2018-05-12 11:44:38

标签: c# sorting oop

我在c#中有关于面向对象编程的功课。作为我家庭作业的一部分,我需要制作2种不同的排序算法并将随机数放入其中,并观察有关2种不同算法的统计数据。 关于我的教导在电子邮件中说我" 非静态排序类可以统计排序有多少数字,多快,最小,最大,平均...... "

所以有我的排序算法,插入和计数排序。请告诉我如何保持有关排序的统计信息。

不要忘记我作业的主题是OOP。

class InsertionSorting : Sort    
{
    public override List<int> Sorting(List<int> SortList)
    {

        for ( int i=0; i<SortList.Count-1; i++)
        {
            for (int j= i+1; j>0; j--)
            {
                if (SortList[j-1] > SortList [j])
                {
                    int temp = SortList[j - 1];
                    SortList[j - 1] = SortList[j];
                    SortList[j] = temp;
                }
            }                                
        }
        return SortList;
    }
}



class CountSorting : Sort
{
    public override List<int> Sorting(List<int> SortList)
    {
        int n = SortList.Count;
        List<int> output = new List<int>();
        List<int> count = new List<int>();

        for (int i = 0; i < 1000; ++i)
        {
            count.Add(0);
            output.Add(0);                
        }

        for (int i = 0; i < n; ++i)
            ++count[SortList[i]];

        for (int i = 1; i <= 999; ++i)
            count[i] += count[i - 1];

        for (int i = 0; i < n; ++i)
        {
            output[count[SortList[i]] - 1] = SortList[i];
            --count[SortList[i]];
        }

        for (int i = 0; i < SortList.Count; i++)
            SortList[i] = output[i];

        return SortList;
    }
}

2 个答案:

答案 0 :(得分:0)

您的分类分为两类 - InsertionSorting&amp; CountSorting。

如果你想跟踪统计数据,在类中声明一个变量,并在每次迭代等时增加它。然后你可以看到哪一个更有效。

E.g

class InsertionSorting : Sort    
{
    private int iterations = 0
    ...
        for (int j= i+1; j>0; j--)
        {
            if (SortList[j-1] > SortList [j])
            {
                iterations++
                ...

您还可以声明startTime和endTime,以便确定排序所花费的时间。在“排序”开始时记录开始时间,并在返回记录结束时间之前。写一种报告差异的方法。

答案 1 :(得分:0)

你的教授告诉你他们怎么说“...关于排序多少数字,多快,最小,最大,平均......的统计数据。”你最好的选择是创建一个类,如“统计”,其中包含允许用户输入的方法,通过args或直接用户提示。变量应该像“要排序的数字的数量”“数字范围的下限”,“数字范围的上限”一样简单,并且,如果自动化测试过程,“迭代的次数”。

给出这些问题的答案,你应该用它们运行两个排序算法(例如使用随机数生成器,并使用max和min生成列表。)你的排序算法需要添加“记录”这些统计数据。很可能是一个跟踪阵列中发生的位置交换次数的变量。

我不打算为你写出你的作业(这是你的工作,你应该擅长这一点。)但如果你有任何疑问,我可以引导你朝着正确的方向前进如果这太模糊了,你还在苦苦挣扎。