数组(Array)& 数组里简单排序
//冒泡排序
public static void bubblesSort(int[] a){
for (int i = 0; i < a.length - 1; i++){
for (int j = i; j < a.length; j++){
if (a[i] > a[j]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
//快速排序
public static void quickSort(int first, int last, int[] array){
int fi = first;
int la = last;
int middle = array[(fi + la) / 2];
int temp = 0;
while (fi < la){
while (array[fi] < middle)
fi++;
while (array[la] > middle)
la--;
if (fi >= la)
break;
temp = array[fi];
array[fi] = array[la];
array[la] = temp;
if (array[la] == array[fi])
fi++;
if (la == fi){
la--;
fi++;
}
if (la > first)
quickSort(first, la, array);
if (fi < last)
quickSort(fi, last, array);
}
}
二分查找
带查找数据要有序
private static int binarySearch0(int[] a, int fromIndex, int toIndex, int key){
int low = fromIndex;
int high = toIndex - 1;
while (low <= high){
int mid = (low + high) >>> 1;
int midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}