分治算法

来源:互联网 发布:并行计算编程 编辑:程序博客网 时间:2024/06/02 23:51

全排列算法

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);elseSystem.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);elsebinarySearch(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;}



原创粉丝点击