public class reverseArray {
/**
* 反转数组中某一段,begin和end为反转的下标范围
* 例如array={1,2,3,4,5,6},reverse(array,1,4)后,array={1,5,4,3,2,6}
* @param array
* @param begin
* @param end
* @return
*/
public static int[] reverse(int[] array, int begin, int end) {
//判断参数下标是否越界
if(begin < 0 || end > array.length - 1)
return null;
//定义同长度数组,用来存放
int[] finalArr = new int[array.length];
//存放第一段,0 ~ begin-1
for(int i=0; i<begin; i++) {
finalArr[i] = array[i];
}
//存放第二段,begin ~ end
int index = begin;
for(int m=end; m>=begin; m--) {//反向遍历存放
finalArr[index] = array[m];
index++;
}
//存放第三段,end+1 ~ array.length-1
for(int j=end+1; j<array.length; j++) {
finalArr[j] = array[j];
}
return finalArr;
}
public static void main(String[] args) {
//测试
int[] arr = {1,2,3,4,5,6,7,8};
arr = reverse(arr, 2, 6);
if(arr == null)
System.out.println("所填下标越界!");
else
for(int i:arr) {
System.out.print(i + " ");
}
}
}
测试结果:1 2 7 6 5 4 3 8