数组常用函数归纳整理-java语言编写

来源:互联网 发布:配衣服的软件 编辑:程序博客网 时间:2024/05/22 23:58

在ArrayFunction类中定义了常用的数组方法

public class ArrayFunction {

public ArrayFunction() {

}

/*

private ArrayFunction() {

//因为成员函数都是静态的,使用时并不需要创建对象,为了防止其他程序创建对象

,可以对构造函数私有化,限制其他程序访问

***对于成员函数是否需要使用静态修饰符,可以参照成员函数是否访问成员变量

}


*/

public static void main(String[] args){
int[] arr=new int[]{2,5,1,7,0,3,8,2,1};
selectSort(arr);
printArray(arr);
int index=halfSearch_2(arr,100);
System.out.println(index);
int index1=Arrays.binarySearch(arr, 100);//如果存在:返回的具体的角标位置 。不存在:返回 -插入点-1
System.out.println(index1);
}
//选择排序  优点:不需要所有符合条件的数组元素交换
public static int[] select_Sort_2(int[] arr)
{
for(int i=0;i<arr.length-1;i++)
{
int num=arr[i];
int index=i;
for(int j=i+1;j<arr.length;j++)
{
if(num>arr[j])
{
num=arr[j];
index=j;
}
}
if(index!=i)
swap(arr,i,index);
}
return arr;
}
//打印遍历数组
public static void printArray(int[] arr)
{
System.out.print("Array: [");
for(int i=0;i<arr.length;i++)
{
if(i!=arr.length-1)
System.out.print(arr[i]+",");
else
System.out.print(arr[i]);
}
System.out.println("];");

}
// 交换数组元素
public  static void swap(int[] arr,int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
//查找最大值
public static int max(int[] arr)
{
int max=arr[0];
for(int i=1;i<arr.length;i++)
{
if(max<arr[i])
max=arr[i];
}
return max;
}
//查找最小值
public static int min(int[] arr)
{
int min=arr[0];
for(int i=1;i<arr.length;i++)
{
if(min>arr[i])
min=arr[i];
}
return min;
}
//选择排序
public static int[] 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])
{
swap(arr, i, j);
}
}
return arr;
}
//冒泡排序
public static int[] bubbleSort(int[] arr)
{
for(int i=0;i<arr.length-1;i++)
{
for (int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1])

swap(arr, i, j);
}
}

}
return arr;
}
//获得制定元素的索引,如果没有返回0
public static int getIndex(int[] arr,int key)
{
for(int i=0;i<arr.length;i++)
{
if(arr[i]==key)
return i;
}
return -1;
}
/*
*二分查找法 
*/
public static int halfsearch(int[] arr,int key)
{
int max,min,mid;
max=arr.length-1;
min=0;
mid=(min+max)/2;
while(arr[mid]!=key)
{
if(arr[mid]<key)
{
min=mid+1;
}
else if(arr[mid]>key)
{
max=mid-1;
}
if (max<min)
{
return -1;
}
mid=(min+max)/2;
}
return mid;
}
/*
* {13,15,19,28,33,45,78,106};50
* 数组有序并涉及查找的时候要考虑折半查找法
* 解决:halfSearch_2 方法可以解决 
* 自带函数
* int index1=Arrays.binarySearch(arr, 50);
* 如果存在:返回的具体的角标位置 。不存在:返回 -插入点-1
* */
public static int halfSearch_2(int[] arr,int key)
{
int max,min,mid;
max=arr.length-1;
min=0;
while(min<=max)
{
mid=(min+max)>>1;
if(arr[mid]<key)
{
min=mid+1;
}
else if(arr[mid]>key)
{
max=mid-1;
}
else 
{
return mid;
}
}
return min;
}
}
0 0
原创粉丝点击