Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保留排序算法的统计信息_C#_Sorting_Oop - Fatal编程技术网

C# 保留排序算法的统计信息

C# 保留排序算法的统计信息,c#,sorting,oop,C#,Sorting,Oop,我有一个关于c语言面向对象编程的家庭作业。作为我家庭作业的一部分,我需要制作两种不同的排序算法,并将随机数放入其中,观察两种不同算法的统计数据。 关于这一点,我的老师在电子邮件中告诉我,“非静态排序类可以保留有关排序多少个数字、速度、最小值、最大值、平均值……的统计信息。” 我的排序算法是插入和计数排序。请告诉我如何保存有关排序的统计信息 别忘了我作业的主题是OOP class InsertionSorting : Sort { public override List<i

我有一个关于c语言面向对象编程的家庭作业。作为我家庭作业的一部分,我需要制作两种不同的排序算法,并将随机数放入其中,观察两种不同算法的统计数据。 关于这一点,我的老师在电子邮件中告诉我,“非静态排序类可以保留有关排序多少个数字、速度、最小值、最大值、平均值……的统计信息。”

我的排序算法是插入和计数排序。请告诉我如何保存有关排序的统计信息

别忘了我作业的主题是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;
    }
}
类插入排序:排序
{
公共覆盖列表排序(列表排序列表)
{
对于(int i=0;i0;j--)
{
if(排序列表[j-1]>排序列表[j])
{
int temp=SortList[j-1];
SortList[j-1]=SortList[j];
SortList[j]=温度;
}
}                                
}
返回排序列表;
}
}
类计数排序:排序
{
公共覆盖列表排序(列表排序列表)
{
int n=排序列表计数;
列表输出=新列表();
列表计数=新列表();
对于(int i=0;i<1000;++i)
{
计数。添加(0);
输出。添加(0);
}
对于(int i=0;i对于(inti=1;i您的排序分为两个类-InsertionSorting和CountSorting

如果您想跟踪统计信息,请在类中声明一个变量,并在每次迭代等时递增它,那么您可以看到哪个更有效

例如


您还可以声明开始时间和结束时间,以确定排序所用的时间。在“排序”开始时,记录开始时间,在返回之前,记录结束时间。编写一个方法报告差异。

您的教授已经告诉您当他们说“…有关排序多少个数字、速度、最小值、最大值、平均值的统计信息…”您最好创建一个类,如“统计信息”,它包含一个允许用户通过args或直接用户提示进行输入的方法。变量应与“要排序的数字计数”“数字范围的下限”一样简单数字范围的上限”,如果测试过程自动化,“迭代次数”

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

我不打算给你写作业(那是你的工作,你应该做得很好。)但如果你对此还有任何问题,如果这太模糊,而你仍在挣扎,我可能会引导你朝着正确的方向前进

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