一些小演算法的實現,練手
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());
}
}
}