永发信息网

自学C#,下面这段代码恳请网友赐教一下,谢谢。

答案:4  悬赏:0  手机版
解决时间 2021-01-30 14:58
自学C#,下面这段代码恳请网友赐教一下,谢谢。
最佳答案
syht2000说的对,而且这个函数写的复杂了一些,如果使用上List的话,会简单明了很多,我这里加了一些注释,你看看能不能看得更明白一些。
    /// 
    /// 从一组int值中找出最大值,并返回最大值对应的索引值
    /// 

    /// 待检索的数组.
    /// 保存最大值索引的数组.
    /// 最大值
    static int Maxima(int[] integers, out int[] indices)
    {
        Debug.WriteLine("Maximum value search started.");
        indices = new int[1]; // 最大值索引数组初始化
        int maxVal = integers[0]; // 取出第一个值,作为当前的最大值 
        indices[0] = 0; // 最大值索引数组设置为第1位(0开始的)
        int count = 1; // 最大值索引数组长度, 可以使用indices.Length获得
        Debug.WriteLine("Maximum value initialized to" + maxVal + ",at element index 0.");
        // 从比较数组中第2个值开始取值与当前最大值进行比较
        for (int i = 1; i < integers.Length; i++)
        {
            Debug.WriteLine("Now looking at element at index" + i + ".");
            if (integers[i] > maxVal) // 发现大于当前最大值的数值
            { // 重设置当前最大值 ,重设最大值索引数组
                maxVal = integers[i];
                count = 1; // 长度置1
                indices = new int[1]; // 最大值索引数组长度置1
                indices[0] = i; // 数组内容为当前找到的最大值的索引
                Debug.WriteLine("New maxium found.New value is" + maxVal + ",at element index" + i + ".");
            }
            else
            {
                if (integers[i] == maxVal) // 如果再次发现当前最大值
                { // 将刚发现的最大值的索引值加入到索引值数组中
                    count++; // 最大值索引数组长度+1, 这个值没有存在的必要,见下面
                    int[] oldIndices = indices; // 保存旧的最大值索引数组,准备复制到新的数组中去
                    indices = new int[count];  // 使用count 值初始化最大值索引数组,new int[indices.Length + 1]即可,count可以取消掉
                    oldIndices.CopyTo(indices, 0); // 将原来的最大值索引值都复制到新的数据中
                    indices[count - 1] = i; // 将当前的最大值索引值数组保存至数据的最后一位
                    Debug.WriteLine("Duplicate maximum found at element index" + i + ".");
                }
            }
        }
        Trace.WriteLine("Maximum value" + maxVal + "found,with" + count + "occurrences.");
        Debug.WriteLine("Maximum value search completed.");
        return maxVal; // 返回最大值 
    }
全部回答
建议初学者多去看一些视频,这样会比较好,看书结合视频。这样进步快一些。光看书是没有什么用的
Maxima函数是判断出对大的数。
static int Maxima(int[] integers, out int[] indices)
这个方法的返回值为integers数组中的最大值,indices中存的则是等于这个最大值的索引值,比如说对于
int[] testArray = { 4, 7, 4, 2, 7, 3, 7, 8, 3, 9, 1, 9 };
int maxVal = Maxima(testArray, out maxValIndices);
运行之后maxval即为9,maxValIndices[0]为9,maxValIndices[1]为11
其它的全是基础语法,没太多好说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
快穿小说,女主有一次穿成小红帽
下列不属于人类特有的反射活动是CA. 谈虎色变
穿越火线3背包怎么解除
建房请两个风水先生看的结果不一样怎么办
下洼小魏五金灯饰怎么去啊,我要去那办事
正南八北的意思是什么啊?知道的请说下!
丰田卡罗拉凸轮铀故障码p0340
《马关条约》被迫开放的通商口岸最东端的是__
木王家具城地址好找么,我有些事要过去
【水火棍】一条水火棍打一数字(0~9)
华山哪个峰景色最好
万福家具城地址有知道的么?有点事想过去
清凉油的意思是什么啊?知道的请说下!
糖类不含有,脂类不一定有,蛋白质也不一定有
vba中怎么多行注销,除了用逗号
推荐资讯
张妍用韩语怎么写?
ems快递一个月都没到,怎么办,有赔偿吗
win10开机密码怎么查看啊?
中山雅廷商务酒店地址在什么地方,想过去办事
永定门到张家口几点有车
写作(50分)两题任选一题要求:字数在600字
工伤内退职工按什么基数领工资
熬夜对痘坑修复有影响吗
屁股与大腿两边长包是怎么了,求原因
【筋疲力歇】筋疲力竭的意思
悦诗风吟适合年龄人用?
It’s important to give the babysitter an
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?