解决方案 »

  1.   

    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;
    }
      

  2.   

    /*
    需求:把一个数组的前半部分按照由小到大顺序排序,后半部分按照由大到小顺序排序
    思路:
    1 先把数组按照从小到大的顺序排列好
    2 取中间的那个数字
    3 把右边的数字倒序排列
    */
    class HomeWork2 
    {
    public static void main(String[] args) 
    {
    int[] arr={12,43,21,32,42,56};
    bubble(arr);
    }
    //冒泡排序,先把数组从小到大排列
    public static void bubble(int[] arr)
    {
    for(int i=0;i<arr.length-1;i++)
    {
    for(int j=0;j<arr.length-1-i;j++)
    {
    if(arr[j]>arr[j+1])
    {
    arr[j]=arr[j]^arr[j+1];
    arr[j+1]=arr[j]^arr[j+1];
    arr[j]=arr[j]^arr[j+1];
    }
    }
    //System.out.println();
    }
    swapNum(arr);
    }
    //数组的后半部分按照从大到小排列
    public static String swapNum(int[] arr)
    {
    int head=arr.length/2;
    int tail=arr.length-1;
    for(int i=0;i<arr.length;i++)
    {
    if(head<tail)
    {
    arr[head]=arr[head]^arr[tail];
    arr[tail]=arr[head]^arr[tail];
    arr[head]=arr[head]^arr[tail];
    }
    head++;
    tail--;
    }
    //String str="33333";
    for(int i=0;i<arr.length;i++)
    {
    System.out.print(arr[i]);
    if(i<arr.length-1)
    {
    System.out.print(",");
    }
    //str=str+arr[i];
    }
    //System.out.println(str);
    return "";

    }}