1、快速排序算法
public void quickSort(int[] num, int left, int right){
if(num==null) return;
if(left>=right) return;
int i = left;
int j = right;
int tmp = num[0];
while(i < j){
while(i < j && num[j] >= tmp){
j--;
}
num[i]=num[j];
while(i < j && num[i] <= tmp){
i++;
}
num[j]=num[i];
num[i]=tmp;
}
quickSort(num, left, i-1;);
quickSort(num, i+1, right);
}
2、二分查找算法
- 递归实现
private int halfSearch(int[] a, int left, int right, int target){
int mid = (left+right)/2;
int midValue = a[mid];
if(left <= right){
if(midValue < target) {return halfSearch(a, mid+1, right, target);}
else if(midValue > target) {return halfSearch(a, left, mid-1, target);}
else {return mid;}
}
return -1;
}
- 非递归实现
private int halfSearch(int[] a, int target){
int i = 0;
int j = a.length-1;
while(i <= j){
int mid = (i+j)/2;
int midValue = a[mid];
if(midValue < target) {i=mid+1;}
else if(midValue > target) {j=mid-1;}
else {return mid;}
}
return -1;
}