搜索数组的最小/最大元素
假设我们有一个 n 元素数组,我们想在其中找到一个最小(或最大)元素。a 是一个索引从 0 到 n-1 的数组 。它的元素将被标记为:a[0], a[1],a[2],a[3],...,a[n-1]。
要找到最小元素,我们将采取以下步骤:
- 开始时,我们将使用数组中的第一个值初始化结果,即 a[0],
- 然后我们将遍历数组的下一个元素(从第二个开始),如果数组的给定元素小于我们的结果,我们将通过将此元素分配给它来更新我们的结果,
- 遍历所有元素后,我们将得到数组中最小的元素。
基础代码
private void button1_Click(object sender, EventArgs e)
{
int[] a = { 10, -5, 2, 3, 88, 6, -19, 23 };
int min = a[0];
for(int i=1; i<a.Length; i++)
{
if (a[i] < min)
{
min = a[i];
}
}
int max = a[0];
for(int i=1; i<a.Length-1; i++)
{
if (a[i] > max)
{
max = a[i];
}
}
MessageBox.Show("数组最小值 = " + min + "\n最大值 =" + max, "计算数组最大、最小值");
}
简约代码
先从小到大的排序。
private void button1_Click(object sender, EventArgs e)
{
int[] a = { 10, -5, 2, 3, 88, 6, -19, 23 };
Array.Sort(a);
MessageBox.Show("数组最小值 = " + a[0] + "\n最大值 =" + a[a.Length-1], "计算数组最大、最小值");
}
第一个元素就是最小值;最后一个元素是最大值。
速度?超快!
中值(不是平均值哦!)是多少?
int mv = a[a.Length / 2];
数组排序的几个要点
Array 类是一个抽象类,是所有数组的基类。用方括号表示数组会创建一个派生自 Array 类的新类,这个类可以使用 Array 类定义的方法和属性。
Array 有一个静态方法给数组元素排序,该种元素类型必须实现 Icompare 接口。而简单类型(如 int,string 类型,他们已经实现了该接口,可以直接使用 sort 方法进行排序)。
整体升序:Array.Sort(A);
整体降序:先升序,再反转Array.Reverse(A);
局部升序: Array.Sort(A,2,4);//从索引为2的元素开始的4个元素进行升序
局部降序:Array.Reverse(A,2,3);//对索引为2的元素开始的3个元素进行反转,这是接着Array.Sort执行的。