1. 程式人生 > >一些小演算法的實現,練手

一些小演算法的實現,練手

1.從一串重複的數字中,找到其中那個單獨的數字。

public class AloneTest {
    public static int alone(int[] a) {
        int m=0;
        for(int i=0;i<a.length;i++) {
            for(int n:a) {
                if(n==a[i]) {
                    m++;
                }
            }     
            if(m==1) 
                return a[i];
            else
                m=0;
        }
        return m;
    }
    
    public static void main(String[] args) {
        int[] a= {3,3,2,2,4,4,1};
        System.out.println(alone(a));
    }
}

2.快速排序演算法的實現

 public static void sort(int[] a,int left,int right) {
      int key=a[right];
      int temp=0;
      int l=left;
      int r=right;
      while(left>=right) return;
      while(l<r) {
        while(l<r&&key>a[l]) {
          l++;
        }
        while(l<r&&key<=a[r]) {
          r--;
        }
        temp=a[l];
        a[l]=a[r];
        a[r]=temp;  
      }  
      System.out.println(Arrays.toString(a));
       temp=a[right];
       a[right]=a[l];
       a[l]=temp;
       System.out.println(Arrays.toString(a));
      sort(a,left,l-1);
      sort(a,r+1,right);    
  }
public static void main(String[] args) {
  int[] a= {1,2,3,4,5,6,7,8};
  sort(a,0,a.length-1);
  System.out.print(Arrays.toString(a));  
}
}

3.用連結串列實現楊輝三角的輸出

public static List<List> input(int i){
      List<List> li = new ArrayList();
      List<Integer> list=new ArrayList();
      List<Integer> list4=new ArrayList();
      List<Integer> list1=new ArrayList();
      List<Integer> list2=new ArrayList();
      List<Integer> list3=new ArrayList();
      list1.add(1);
      list2.add(1);
      list2.add(1);
      list3.addAll(list2);
      list3.add(1,2);
      if(i==1) {
          li.add(list1);
      }
      if(i==2) {
          li.add(list1);
          li.add(list2);
      }
      if(i==3) {
          li.add(list1);
          li.add(list2);
          li.add(list3);      
      }
      if(i>3) {
         li=input(i-1);
         list=li.get(i-2);
         list4.add(1);
         for(int m=0;m<list.size()-1;m++) {
             list4.add(list.get(m)+list.get(m+1));
         }
         list4.add(1);
         li.add(list4);
      }
      return li;
    }  
public static void main(String[] args) {

    List<List> a = new ArrayList();
    Scanner sc=new Scanner(System.in);
    System.out.print("請輸入相應的數字:");
    int i=sc.nextInt();
    a=input(i);
    for(int m=0;m<i;m++) {
    System.out.println(a.get(m).toString());
    }    
}    
}