黑马程序员技术交流社区
标题:
分享代码:数组元素反转
[打印本页]
作者:
丁桂松
时间:
2012-5-28 15:48
标题:
分享代码:数组元素反转
public class ReverseArray {
/**
* @定义一个函数,将数组中所有元素反转。例如:{1, 2, 3} 反转后为 {3, 2, 1}。
*/
public static void main(String[] args) {
// 创建一个数组
int array[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
//调用反转数组的方法将数组反转
reverseArray(array);
//输出反转以后的数组
printArray(array);
}
/*
*思路:
* 把数组最后一个元素与第一个元素交换,倒数第二个元素与第二个元素交换,依次类推.直到把所有数组中的元素反转替换
* 反转排序是对数组两边的元素进行替换,所以只需要循环数组长度的半数,如:数组的长度为7,只需要循环3次,就可以了
* */
static void reverseArray(int arr[]) { //数组的反转排序
for (int i = 0; i < arr.length / 2; i++) { //循环length/2次,每次交换数组中的元素
int temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
}
//反转数组中的元素,并创建一个新的数组,对新数组进行赋值,将新数组的结果输出
static void reverseArray1(int arr[]){
int a [] = new int [arr.length];
//计数器思想
int count =0;
for (int i = arr.length - 1; i >= 0; i--){
a[count]=arr[i];
count ++;
}
System.out.print("[");
for(int i =0;i<a.length;i++){ //遍历数组中的每个元素
//判断角标是不是最大角标,如果不是就打印元素和逗号,如果是就打印元素和"]"号
if(i!=a.length-1)
System.out.print(a[i]+",");
else {
System.out.print(a[i]+"]");
}
}
}
static void printArray(int arr[]) { // 输出数组的方法
System.out.print("{"); // 首次打印左边中括号
for (int i = 0; i < arr.length; i++) { // 遍历数组的角标
if (i != arr.length - 1) { // 如果角标不是最后一位角标,就打印元素和逗号
System.out.print(arr[i] + ", ");
} else { // 否则(角标是最后一位角标),就打印元素并继续打印右边中括号
System.out.print(arr[i] + "}");
}
//把上面的if .. else语句可以改写成下面的三元运算符形式
//System.out.print(i==arr.length-1?arr[i]+"}":arr[i]+",");
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2