黑马程序员技术交流社区
标题:
翻转组数
[打印本页]
作者:
林嘉健
时间:
2013-1-16 20:56
标题:
翻转组数
本帖最后由 林嘉健 于 2013-1-17 12:21 编辑
static void Main(string[] args)
{
int[] a = { 1, 2, 3, 4, 5 };
ReverseArray(a);
Console.ReadKey();
}
public static void ReverseArray(int[] a)
{
for (int i = 0; i < a.Length; i++)
{
int temp = a[a.Length - 1 - i];
a[a.Length - 1 - i] = a[i];
a[i] = temp;
}
foreach (int temp in a)
{
Console.WriteLine(temp);
}
}
复制代码
代码如上 怎么实现不了呢
作者:
王继光
时间:
2013-1-16 21:15
for (int i = 0; i < a.Length; i++)
{
int temp = a[a.Length - 1 - i];
a[a.Length - 1 - i] = a[i];
a[i] = temp;
}
这里的循环条件 经分析 有问题 比如数组有6个元素 你从 0 -5 开始遍历
0 和 5交换
1 和 4 交换
2 和 3交换
3 和 2交换
4 和 1交换
5和 0 交换
从头执行到结尾 其实经历了2次交换 反转了2次 所以没变
只需要把循环条件 控制到 <=length/2 就可以了
作者:
高浩
时间:
2013-1-16 21:20
static void Main(string[] args)
{
int[] a = { 1, 2, 3, 4, 5 };
ReverseArray(a);
Console.ReadKey();
}
public static void ReverseArray(int[] a)
{
int temp=0;
for (int i = 0; i < a.Length; i++)
{
temp = a[a.Length - 1 - i];
a[a.Length - 1 - i] = a
;
a
= temp;
}
foreach (int temp in a)
{
Console.WriteLine(temp);
}
}
将temp 在for循环的外部声明,其实实现数组的反转,只有搞清楚数组的下角标的变化就很容易解决这种问题的,
还有就是通过第三变量进行两个数的交换,最后不要循环一次声明一次,在外面声明一次就可以了。
作者:
jonn
时间:
2013-1-16 21:59
直接画个图,就很清楚了
未命名4.JPG
(18.05 KB, 下载次数: 66)
下载附件
2013-1-16 21:59 上传
作者:
朱京辉
时间:
2013-1-16 22:04
其实这个问题调试一下,就可以知道,在交换的三行代码处添加断点,你这个数组很小,直接监视整个数组a也可以,观察数据变化,你会发现你的程序使数组翻转了两次,所以没有变化,学会调试很重要的,试试吧!!!
作者:
王晨
时间:
2013-1-16 22:28
本帖最后由 王晨 于 2013-1-16 22:30 编辑
LZ的意思我没怎么理解,你的意思是将这个数组倒过来显示就行?那这很简单了
代码:
static void Main(string[] args)
{
int[] a = { 1, 2, 3, 4, 5 };
for (int i = a.Length; i >0; i--)
{
Console.Write(a[i-1]);
}
Console.ReadKey();
}
复制代码
运行结果如图:
但是要将数组排序时(从大到小或者从小到大输出),可以使用 Array.Sort(),用法如下:
eg:
static void Main(string[] args)
{
int[] arry = new int[] { 20, 10, 84, 12, 8, 98, 14, 222, 3333 };
//将其从小到大进行排序,array.sort()用来将数组进行排序
Array.Sort(arry); //排序后,数组由小到大排列,所以第一个为最小值,最后一个为最大值。
Console.WriteLine("该数组最小数为" + arry[0]);//最小数为第一个值
Console.WriteLine("该数组最大数为" + arry[arry.Length - 1]);//最大值为最后一个数
Console.ReadKey();
复制代码
作者:
林嘉健
时间:
2013-1-17 00:14
还有这么多方法啊。明天我好好看看
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2