自学C#,下面这段代码恳请网友赐教一下,谢谢。
答案:4 悬赏:0 手机版
解决时间 2021-01-30 14:58
- 提问者网友:伴风望海
- 2021-01-29 18:44
自学C#,下面这段代码恳请网友赐教一下,谢谢。
最佳答案
- 五星知识达人网友:鱼芗
- 2021-01-29 20:03
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; // 返回最大值
}
///
/// 从一组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; // 返回最大值
}
全部回答
- 1楼网友:第幾種人
- 2021-01-29 22:39
建议初学者多去看一些视频,这样会比较好,看书结合视频。这样进步快一些。光看书是没有什么用的
- 2楼网友:蓝房子
- 2021-01-29 22:24
Maxima函数是判断出对大的数。
- 3楼网友:蕴藏春秋
- 2021-01-29 20:47
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
其它的全是基础语法,没太多好说的。
这个方法的返回值为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
其它的全是基础语法,没太多好说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯