java 自带的数组辅助类_day18_自行封装数组操作的工具类_JAVA自带数组工具类Arrays...

181a9dd42db4

image.png

封装的工具类

//表示数组的工具类,涵盖了很多操作数组的方法

class ArrayUtil

{

//交换元素

static void swap(int[] arr,int index1,int index2)

{

int temp = arr[index1];

arr[index1] = arr[index2];

arr[index2] = temp;

}

//获取数组中最大元素

static int getMax(int[] nums)

{

int j = nums[0];//假设数组第一个值为最大值

for (int i = 1;i < nums.length ;i ++ )

{

if (nums[i] > j)

{

j = nums[i];//就把最大值存储在j变量中

}

}

return j;

}

//获取数组中最小元素

static int getMin(int[] nums)

{

int k = nums[0];//假设数组第一个值为最小值

for (int i = 1;i < nums.length ;i ++ )

{

if (nums[i] < k)

{

k = nums[i];//就把最大值存储在k变量中

}

}

return k;

}

//打印数组

static void print(int[] arr)

{

//思路:先打印数组"[]",再获取arr数组里面的元素,然后再做if判断,判断如果当前i的值不是最后一个索引,则拼接

if (arr == null)

{

System.out.println("null");

return;

}

String ret = "[";

for (int i = 0;i < arr.length ;i ++ )

{

ret = ret + arr[i];

//如果当前i不是最后一个索引,则拼接", "

if (i != arr.length - 1)

{

ret = ret + ", ";

}

}

ret = ret + "]";

System.out.println(ret);

}

//逆序排序

static String[] reverse(String[] oldArr)

{

//创建一个新的数组,存储颠倒之后的元素

String[] newArr = new String [oldArr.length];

for (int i = oldArr.length - 1;i >= 0 ;i -- )

{

//i = 4 newArr[0]

//i = 3 newArr[1]

newArr[oldArr.length - 1 - i] = oldArr[i];

}

return newArr;

}

//二分搜索法/二分查找法/折半查找

static int binarySearch(int[] arr,int key)

{

int low = 0;//最小的索引

int high = arr.length - 1;//最大的索引

while (low <= high)

{

System.out.println(low+"----------"+high);

int mid = (low + high) >> 1 ;//中间索引

int midVal = arr[mid];//将中间索引的元素赋值给变量midVal

if(midVal > key)//猜大了

{

high = mid - 1;//最大的索引=中间索引-1(缩小搜索范围)

}

else if(midVal < key)//猜小了

{

low = mid + 1;//最小的索引=中间索引+1(缩小搜索范围)

}

else

{

return mid;//如果中间索引刚好=key值,就直接返回mid

}

}

return -1;//假如说传入的元素没有在数组中,直接返回-1,表示不在该数组范围内,越界了.

}

//选择排序

static void selectinonSort(int[] arr)

{

/*

//第一轮

for (int i = 1;i <= arr.length - 1 ;i ++ )

{

if (arr[0] > arr[i])

{

swap(arr,0,i);

}

}

//第二轮

for (int i = 2;i <= arr.length - 1 ;i ++ )

{

if (arr[1] > arr[i])

{

swap(arr,1,i);

}

}

//第三轮

for (int i = 3;i <= arr.length - 1 ;i ++ )

{

if (arr[2] > arr[i])

{

swap(arr,2,i);

}

}

*/

//代码加强

for (int j = 1;j <= arr.length - 1;j ++ )

{

for (int i = j;i <= arr.length - 1 ;i ++ )

{

if (arr[j - 1] > arr[i])

{

swap(arr,j - 1,i);

}

}

}

}

//冒泡排序

static void sort(int[] arr)

{

//代码加强

for (int i = 1;i <= arr.length - 1 ;i ++ )

{

for (int j = 1;j <= arr.length - i ;j ++ )

{

if (arr[j - 1] > arr[j])

{

swap(arr,j-1,j);

}

}

}

/*

//第一轮

for (int i = 1;i <= arr.length - 1 ;i ++ )

{

if (arr[i - 1] > arr[i])

{

swap(arr,i-1,i);

}

}

//第二轮

for (int i = 1;i <= arr.length - 2 ;i ++ )

{

if (arr[i - 1] > arr[i])

{

swap(arr,i-1,i);

}

}

//第三轮

for (int i = 1;i <= arr.length - 3 ;i ++ )

{

if (arr[i - 1] > arr[i])

{

swap(arr,i-1,i);

}

}

*/

}

static void copy(int[] src,int srcPos,int[] dest,int destPos,int length)

{

/*

//拷贝3

dest[destPos]=src[srcPos];

//拷贝4

srcPos++; destPos++;

dest[destPos]=src[srcPos];

//拷贝5

srcPos++; destPos++;

dest[destPos]=src[srcPos];

//拷贝6

srcPos++; destPos++;

dest[destPos]=src[srcPos];

*/

//优化后的代码

//i等于每次需要拷贝元素的索引

for (int i = srcPos;i < srcPos + length;i ++ )

{

dest[destPos] = src[i];

destPos++;

}

}

//元素第一次索引

static int indexOf(int[] arr,int key)

{

for (int index = 0;index < arr.length ;index ++ )

{

if (arr[index] == key)

{

return index;

}

}

return -1;

}

//最后一次

static int lastIndexOf(int[] arr,int key)

{

for (int index = arr.length-1;index >=0 ;index -- )

{

if (arr[index] == key)

{

return index;

}

}

return -1;

}

}

调用工具类中的方法

181a9dd42db4

image.png

class ArrayUtilDemo

{

public static void main(String[] args)

{

int[] arr = {2,8,1,9,14,58,69,42};

ArrayUtil.print(arr);

//搜索6的索引

ArrayUtil.sort(arr);//排序

ArrayUtil.print(arr);//打印

int index = ArrayUtil.binarySearch(arr,42);//搜索42的索引

System.out.println(index);//打印返回对应的索引值

}

}

JAVA自带数组工具类Arrays

181a9dd42db4

image.png

//演示数组的工具类,Arrays类

class ArraysDemo

{

public static void main(String[] args)

{

int[] arr = {2,8,1,9,14,58,69,42};

String ret = java.util.Arrays.toString(arr);//打印数组元素

System.out.println(ret);

java.util.Arrays.sort(arr);//排序数组

String ret1 = java.util.Arrays.toString(arr);

System.out.println(ret1);

java.util.Arrays.sort(arr);//二分搜索

int index = java.util.Arrays.binarySearch(arr,8);

System.out.println(index);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值