把一个一维数组的前半部分按照由大到小顺序排序,后半部分按照由小到大顺序排序????
求解用java编写程序,最好能把思路附上。谢谢!
------解决方案--------------------
当做两个数组看,分别记录初始、结束下标,分别升序、降序排序。
------解决方案--------------------
拆开排序好。
------解决方案--------------------
先按从小到大排好,取中间那个数,把左边的放到中间那个数右边,把右边的反序放到中间那个数左边
------解决方案--------------------
public static List<Integer> sortNum(int[]is,int type ){
List<Integer> sort = new ArrayList<Integer>() ;
for (int i = 0; i < is.length; i++) {
if(type==1){
if(i==0){
sort.add(i, is[i]);
}else{
int m = (sort.size()+1)/2 ;//大于的index
int n = -1 ;//小于的index
while(true){
if(n==0){
sort.add(0,is[i]);
break;
}
if(m==sort.size()){
sort.add(sort.size(),is[i]);
break;
}
if(n>0&&is[i]==sort.get(n)){
sort.add(m,is[i]);
break;
}
if(n==m+1){
sort.add(n,is[i]);
break;
}
if(m==n+1){
sort.add(m,is[i]);
break;
}
if(is[i]>sort.get(m)){
n= m ;
m = m/2 ;
}
if(is[i]<sort.get(m)){
n = m ;
m =(sort.size()+m+1)/2 ;
}
}
}
}
if(type==0){
}
}
return sort;
}
------解决方案--------------------
先分成两个数组,分别排序,然后合并为一个!