挑战任务
本关挑战任务是对一个数组进行排序,排序需要遵守一些规则:
先对数组从左到右,相邻元素进行比较,如果第一个比第二个大,就交换它们,进行一个升序排序;
再对数组从右到左,相邻元素进行比较,如果第一个比第二个小,就交换它们,进行一个降序排序;
以此类推,持续的、依次的改变排序的方向,并不断缩小没有排序的数组范围;
按照这种规则依次给整个数组排序,并将排序过程打印到控制台。
比如给出一组数据4,1,3,5,2,排序过程如下:
最后得到结果:1 2 3 4 5。
编程要求
请在右侧编辑器中填充代码,补全sort(Integer[] arr)函数,实现指定的排序功能,并打印出排序过程(元素之间以空格隔开),函数参数说明如下:
arr:待排序的数组
注:不需排序的数组(如:1 2 3),直接打印原数组。
测试说明
样例1:
输入:
2 3 4 5 1
输出:
样例2:
输入:
1 5 4 3 2 6
输出:
package step1;
public class Task {
public void sort(Integer[] arr){
/********* Begin *********/
// private int i=0;
// private int j=0;
// private int t=0;
int k=0;
for(int i=0;i<arr.length-1;i++){
if(arr[i]>arr[i+1]){
k=1;
int t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
for(int j=0;j<arr.length;j++){
System.out.print(arr[j]+" ");
}
System.out.println();
}
}
/********* End *********/
for(int i=arr.length-1;i>0;i--){
if(arr[i]<arr[i-1]){
k=1;
int t=arr[i];
arr[i]=arr[i-1];
arr[i-1]=t;
for(int j=0;j<arr.length;j++){
System.out.print(arr[j]+" ");
}
System.out.println();
}
}
if(k==0){
for(int j=0;j<arr.length;j++){
System.out.print(arr[j]+" ");
}
}
else{
k=1;
while(k!=0){
k=0;
for(int i=0;i<arr.length-1;i++){
if(arr[i]>arr[i+1]){
k=1;
int t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
for(int j=0;j<arr.length;j++){
System.out.print(arr[j]+" ");
}
System.out.println();
}
}
/********* End *********/
for(int i=arr.length-1;i>0;i--){
if(arr[i]<arr[i-1]){
k=1;
int t=arr[i];
arr[i]=arr[i-1];
arr[i-1]=t;
for(int j=0;j<arr.length;j++){
System.out.print(arr[j]+" ");
}
System.out.println();
}
}
}
}
}
}