本帖最后由 史龙贤 于 2012-9-26 02:51 编辑
楼上的那位高明,直接掉工具类中的方法,我就不画蛇添足了,我搞搞原始的,笨点的。
开发时,有方法尽量找现成的方法为上策!
/*
需求:对给定的数组进行反转。
{7,3,9,8,2,5} ---> {5, 2, 8, 9, 3, 7}
思路:反转数组,就是数组中对应的元素交换位置,例如数组中最后索引的元素与头索引的元素交换位置,依次类推。
那么可以定义两个指针(变量),一个从头向后走,一个从尾向前走,(我这句话的意思是定义两个变量,初始化值为0和数组长度-1。)
指针行走的过程我让它for循环,循环过程中变量一个自增,一个自减。(不知道这样写,您明白了吗?)
哦,忘记告诉您循环条件了,如果头指针=尾指针,那么就是中间元素了,如果头指针超过了尾指针,那么还用换吗,您慢慢想,不理解画图来比划。所以循环条件是头指针必须小于尾指针(肯定尾指针要大于头指针了)。
想到这里,聪明的您是否已经明白了呢?我真实王母娘娘的裹脚布又长又臭!
步骤:1、定义数组的反转方法,应该将数组作为参数接收。
2、方法中定义for循环,应该有两个变量作为指针。按上面思路走啊走,走到条件不满足为止。
3、单独定义交换元素的方法。
4、单独定义打印数组的方法。
5、测试!
*/
class ArrayTest {
public static void main(String[] args) {
int[] arr = {7,3,9,8,2,5};
reserveArray(arr);
printArray(arr);
}
//反转数组。
public static void reserveArray(int[] arr) {
//定义两个指针,头start,初始化值为0,尾end,初始化值为最后一个元素索引。
// 循环开始,头向尾走,自增;尾向头走,自减,条件:头的位置超过尾的位置。
for (int start = 0, end = arr.length - 1; start < end; start++, end--) {
swap(arr, start, end);
}
}
//交换数组中元素位置。
public static void swap(int[] arr, int start, int end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
//打印数组
public static void printArray(int[] arr) {
System.out.print("int[] arr = {");
for (int x = 0; x < arr.length; x++) {
if (x != arr.length - 1)
System.out.print(arr[x] + ", ");
else
System.out.print(arr[x]);
}
System.out.println("}");
}
} |