public class ArrayTools{
private ArrayTools(){}
/**
* 初始化数组
* @param arr 指定一个int数组 length是指数组的长度
* 没有返回值
* */
public static void initArr(int []arr,int SIZE){
for (int i=0; i<SIZE; i++){
arr[i] = (int)(Math.random()*100+1);
}
}
/**
* 打印数组
* @param 指定一个int数组 SIZE 是指数组的长度
*
*/public static void intputArr(int []arr, int length){
System.out.print("[");
for (int i=0; i<length; i++){
if ( i == length-1){
System.out.print( arr[i] );
}
else {
System.out.print( arr[i]+"," );
}
}
System.out.print("]");
}
/**
* 输出数组
* @param 指定一个int数组 length是指数组的长度
* 没有返回值
*/
public static void buddleArray(int []arr,int length){
for (int i=0; i<length-1; i++){
for (int j=0; j<length-1-i; j++){
if( arr[j] > arr[j+1] ) {
Swap(arr ,j , j+1);
}
}
}
}
/**
*交换数组中的值
* @param 指定一个int数组 x y 分别是数组当中的标
* 没有返回值
*/
public static void Swap (int []arr, int x, int y){
if ( arr[x] > arr[y]){
int temp = 0;
temp = arr[x] ;
arr[x] = arr[y];
arr[y] = temp;
}
}
/**
* 获得数组中的最大值
* @param 指定一个int数 length是指数组的长度
* @return 有返回值 返回的是数组中的最大值
* */
public static int getMax (int []arr, int length){
int max = 0;
for (int i = 1; i<arr.length; i++){
if(max < arr[i] )
max = arr[i];
}
return max;
}
/**
* 获得数组中的最小值
* @param 指定一个int数 length是指数组的长度
* @return 有返回值 返回的是数组中的最小值
* */
public static int getMin (int []arr, int length){
int min = 0;
for (int i = 1; i<arr.length ; i++){
min = arr[0];
if (min > arr[i] )
min = arr[i];
}
return min;
}
/**
* 查找
* @param 指定一个int数 length是指数组的长度 value 要查找的值
* @return 在数组中用无序查找找到想要的值
* */
public static int unOderFind (int []arr, int value){
int index = 0;
int i = 0;
while (i <= arr.length-1 ) {
if( arr[i] == value){
index = i;
break ;
}
else {
index = -1;
}
i++;
}
return index;
}
/**
* 二分查找
* @param 指定一个int数 lvalue 要查找的值
* @return 在数组中用无序查找找到想要的值
* */
public static int halfFind (int []arr, int value){
int max = arr.length-1;
int min = 0 ;
int mid = (max + min)/2;
int i= 0;
while(i <= arr.length){
if( value > arr[mid]){
min = min + 1;
}
else if(value < arr[mid]){
max = mid -1;
}
else if(value == arr[mid]){
break ;
}else
mid = -1;
i++;
mid = (max + min)/2;
}
return mid;
}
/**
*用选择排序
* @param 指定一个int数length 为数组 的长度
* 没有返回值
* */
public static void selectOrder(int []arr, int length){
for(int i=0 ;i<length; i++){
for(int j = i+1; j<length-1; j++)
Swap(arr ,i ,j);
}
}
}
下面是主类
public class ArrayToolsTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final int SIZE = 10;
int find1= 34;
int find2 = 31;
int []arr = new int[SIZE];
int []arr1 = {25,37,52,34,15,78,62,94,31,49};
ArrayTools.initArr(arr, SIZE); // 初始化数组
ArrayTools.intputArr(arr, SIZE); //输出数组
System.out.println("冒泡排序后:");
ArrayTools.buddleArray(arr, SIZE);//用冒泡排序
ArrayTools.intputArr(arr, SIZE); //打印数组
System.out.println("数组中的最大数据是:\t"+ArrayTools.getMax(arr, SIZE)); //h获取数组当中的最大值
System.out.println("数组中的最小数据是:\t"+ArrayTools.getMin(arr, SIZE)); //h获取数组当中的最大值//或的数组当中的最小值
// 用无序查找
int index = ArrayTools.unOderFind(arr1, find1);
if(index == -1)
System.out.println("你调用的是无序查找 \t抱歉你要查找 的这个数据 "+find1+"不存在于数组arr1当中");
else
System.out.println("你调用的是无序查找 \t恭喜你你要查找的数据"+find1+"在于数组arr1当中"+"数组的下标是\t"+ index);
System.out.println();
//二分查找
int mid = ArrayTools.halfFind(arr1, find2);
if( mid == -1)
System.out.println("你调用的是二分查找 \t抱歉你要查找 的这个数据"+find2+"不存在于数组arr1当中");
else
System.out.println("你调用的是二分查找 \t恭喜你你要查找的数据"+find2+"在于数组arr1当中"+"数组的下标是\t"+ mid);
ArrayTools.intputArr(arr1, SIZE); //输出数组
ArrayTools.selectOrder(arr1, SIZE);//选择排序
System.out.println();
ArrayTools.intputArr(arr1, SIZE); //输出数组
}
} |