int a[]={11,17,10,62};
int n = a.length;
int j,temp;
for(int i=1;i<n;i++){
if(a[i]<a[i-1]){
        temp=a[i];
        j=i-1;
        while(temp<a[j]&&j>0){
          a[j+1]=a[j]; 
        
         j--;
        
        }
           a[j]=temp; 
  }
}
结果是:10,17,17,62,
我知道问题在while里,可总抓不住请教该怎么写

解决方案 »

  1.   

    package test;import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;public class SortTest { private List<Integer> list = new ArrayList<Integer>(); /**
     * @param args
     */ public SortTest() {
    list.add(11);
    list.add(10);
    list.add(62);
    list.add(50);
    } public List sort(List<Integer> a) {
    if (a.size() == 2) {
    if (a.get(0) < a.get(1)) {
    ;
    } else {
    int right = a.get(0);
    int left = a.get(1);
    a.clear();
    a.add(left);
    a.add(right);
    return a;
    }
    }
    if (a.size() == 1) {
    return a;
    }
    int l = (a.size()-1) / 2;

    int element = a.get(l);
    System.out.println(element);
    List<Integer> left = new ArrayList<Integer>();
    List<Integer> right = new ArrayList<Integer>();
    Iterator it = a.iterator();
    while (it.hasNext()) {
    Integer i = (Integer) it.next();
    if (i.intValue()<element) {
    left.add(i);
    } else if(i.intValue()>element){
    right.add(i);
    }
    }
    System.out.println(left);
    System.out.println(right);
    if(left.size()!=0){
    left = sort(left);
    }
    if(right.size()!=0){
    right = sort(right);
    }

    a.clear();
    a.addAll(left);
    a.add(element);
    a.addAll(right);
    return a;
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    SortTest s = new SortTest();
    s.sort(s.list);
    System.out.println(s.list);
    }}