[java]代码库
/*这个类是关于数组的相关操作,如数组的求最大值,最小值,选择排序 二分法查找等 */
public class ArrayTools {
public int max(int[] array) {
int max = Integer.MIN_VALUE;
for (int i = 0; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
return max;
}
public int min(int[] array) {
int min = Integer.MAX_VALUE;
for (int i = 0; i < array.length; i++) {
if (array[i] < min) {
min = array[i];
}
}
return min;
}
/**
* 选择排序
*
* @param array
*/
public void selectSort(int[] array) {
int minIndex;// 最小索引
int temp;
for (int i = 0; i < array.length; i++) {
minIndex = i;// 假设每轮第一个元素为最小元素
// 从假设的最小元素的下一元素开始循环
for (int j = i + 1; j < array.length; j++) {
// 如果发现有比当前array[smallIndex]更小元素,则记下该元素的索引于smallIndex中
if ((array[j] < array[minIndex])) {
minIndex = j;
}
}
// 先前只是记录最小元素索引,当最小元素索引确定后,再与每轮的第一个元素交换
temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
}
}
/**
* 二分法查找,前提是已排序
*
* @param array
* @param des
* @return
*/
public static int binarySearch(int[] array, int des) {
int low = 0;
int high = array.length - 1;
while (low <= high) {
int middle = (low + high) / 2;
if (des == array[middle]) {
return middle;
} else if (des < array[middle]) {
high = middle - 1;
} else {
low = middle + 1;
}
}
return -1;
}
/**
* 测试
*
* @param args
*/
public static void main(String[] args) {
int[] array = { 5, 9, 1, 0, 4, 2, -6, 3, 8, 0, 76, -7, 7, 11, 12, 19,
8, 9, 10, 28, 53 };
ArrayTools arrayTools = new ArrayTools();
System.out.println("原数组:");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
System.out.println("选择排序结果:");
arrayTools.selectSort(array);
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
System.out.println("二分法查找 9 的位置:" + arrayTools.binarySearch(array, 9));
System.out.println("最大值:" + arrayTools.max(array));
System.out.println("最小值:" + arrayTools.min(array));
}
}
[代码运行效果截图]