黑马程序员技术交流社区
标题:
数组工具类
[打印本页]
作者:
lijiansheng
时间:
2015-6-11 20:32
标题:
数组工具类
/**建立一个用做数组的工具,能求出数组中最大的值,能排序,能交换两个元素位置
@author 李建胜
@version 1.0
*/
//定义一个类首先,叫做ArrayTools 然后在类中实现方法
class ArrayTools{
//取出数组中最大的值 算法假设第一个值最大,即arr[0]最大,让arr[0]与后面每个元素依次比较如果arr[0]<arr[i]
//则交换位置 最后返回最大值arr[0]
//参数要传进一个数组数组定义 int[]
//该类中的方法都是静态的 ,所以该类不需要创建对象,为了避免被创建对象 将构造函数私有化
private ArrayTools(){};
public static int getMax(int[] arr){
int max=0;
for(int i=1;i<arr.length;i++){
if(arr[i]>arr[max]){
max=i;
}
}
return arr[max];
}
/*写一个方法将两个元素交换
*/
public static void arrSwap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
//冒泡排序 bubbleSort
public static void bubbleSort(int[] arr){
//外层循环控制行数每次出一个最大值 一共需要arr.length-2次因为是<所以写-1.假如5个数第一次比需要比四次
for(int i=0;i<arr.length-1;i++){
//内层循环表示两两相比打的数向上冒,每次必出一个最大值后,所以下一次比时,就少一个。这样第i次就少i个
for(int j=0;j<arr.length-1-i;j++){
//参数传递 方法定义的是索引要用索引传递
//判断交换
if(arr[j]>arr[j+1]){
arrSwap(arr,j,j+1);
}
}
}
}
//选择排序 第一个依次和第二个第三个第四个相比先找出最大的 冒泡是临近的两个数两两相比
public static void selectSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
arrSwap(arr,i,j);
}
}
}
}
/**
获取指定的元素在指定数组中的索引.
@param arr 接收一个元素为int类型的数组。
@param key 要找的元素。
@return 返回该元素第一次出现的位置,如果不存在返回-1.
*/
public static int getIndex(int[] arr,int key){
for(int i=0;i<arr.length-1;i++){
if(arr[i]==key){
return i;
}
}
return -1;
}
/**
将int数组转换成字符串。格式是:[e1,e2,...]
@param arr 接收一个元素为int类型的数组。
@return 返回该数组的字符串表现形式。
*/
public static String getString(int[] arr){
String left="[";
for(int i=0;i<arr.length;i++){
if(i!=arr.length-1){
//字符串拼接 left 是字符串 ,arr[i]是变量数字 先将数字表达出来 在拼接字符串
left=left+arr[i]+",";
}else{
left=left+arr[i]+"]";
}
}
return left;
}
}
/*定义一个测试类测试所写方法的正确性 TestArray 写主函数
*/
public class TestArray{
public static void main(String[] args){
//可以用这种方式赋值先创建对象在赋值 也可以直接赋值 在这里直接将数组初始化
//int[] arr=new int[5];
int[] arr1={13,78,56,34,102,29};
int[] arr2={13,78,56,34,102,29};
int max=ArrayTools.getMax(arr1);
System.out.println("最大值为"+max);
ArrayTools.arrSwap(arr1,0,3);
System.out.println("冒泡排序结果为");
ArrayTools.bubbleSort(arr1);
shuchu(arr1);
ArrayTools.selectSort(arr2);
System.out.println("\n"+"选择排序结果为");
shuchu(arr2);
int index=ArrayTools.getIndex(arr1,56);
System.out.println("排序后相同的索引为"+index);
System.out.println(ArrayTools.getString(arr1));
}
//方法定义在主方法外面
public static void shuchu(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2