全排列算法
private int count=0;
public void perm(int[] list, int k, int m) {
if (k == m) {
for (int i = 0; i < list.length; i++) {
System.out.print(list[i] + " ");
}
count++;
System.out.println();
} else {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = k; i <= m; i++) {
if (!map.containsKey(list[i])) {
map.put(list[i],i);
swap(list, k, i);
perm(list, k + 1, m);
swap(list, k, i);
}
}
}
二分搜索算法
public void binarySearch(int[] a,int start,int end,int key){
if(start==end)
if(a[start]==key)
System.out.println(start);
else
System.out.println("no");
else{
int mid=(start+end)/2;
if(a[mid]==key)
System.out.println(mid);
else if(a[mid]>key)
binarySearch(a, start, mid-1, key);
else
binarySearch(a, mid+1, end, key);
}
}
快速排序算法
public void qiuckSort(int[]a ,int start,int end){
if(start<end){
int p=partition(a,start,end);
qiuckSort(a,start,p-1);
qiuckSort(a,p+1,end);
}
}
public int partition(int[]a,int start,int end){
int x=a[start];
int i=start;
int j=end;
while(i<j){
while(a[j]>=x&&i<j){
j--;
}
a[i]=a[j];
while(a[i]<=x&&i<j){
i++;
}
a[j]=a[i];
}
a[i]=x;
return i;
}