原文连接:https://www.cnblogs.com/nevermorewang/p/9811755.html
今天碰到一个面试题觉得挺有意思,特来记录一下.
有一给定数组,按锯齿形状排列数组元素。比如aceg … 以此类推。给定数组:{1, 2, 3, 4, 5, 6, 7, 8, 9}, 请编程。
代码:
/**
* 锯齿排列数组顺序
*/
@Test
public void test1(){
int[] arr = {1,2,3,4,5,6,7,8,9};
for(int i=0;i<arr.length-1;i++){
int z = arr[i];
if(i%2 == 0){ //小于
if(arr[i] > arr[i+1]){
arr[i] = arr[i+1];
arr[i+1] = z;
}
}else{ //大于
if(arr[i] < arr[i+1]){
arr[i] = arr[i+1];
arr[i+1] = z;
}
}
}
//打印数组
for(int i=0;i<arr.length;i++){
System.out.print(arr[i] + ", ");
}
}
结果显示:
排序的结果是错误的,不知道哪里错了!直觉上也不可行,但又想不出来其他的方法。
需要排序的子数组长度
参考:https://blog.csdn.net/a739260008/article/details/86690919