今天来给大家分享下,数组常见的操作,代码比较简单,可能也总结的不全乎,就当作回忆一下知识吧。
//关于数组操作的一些方法
class TheArrayDemo {
//位置置换方法(不需要提供出去,所以设为private)
private static void swap(int [] arr,int x,int y)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
//冒泡排序
public static void bubbleSort(int []arr)
{
//外层一共比较arr.length-1次,因为最后一个数不用比。
for ( int x=0; x<arr.length-1; x++)
{
//外层每比较一次,内层需要比较的次数就少一次,所以和x关联上,
//减1是为了防止y+1越界。
for ( int y=0; y<arr.length-x-1; y++)
{
if (arr[y]>arr[y+1])
{
//调用位置置换的方法
swap(arr,y,y+1);
}
}
}
}
//选择排序
public static void selectSort(int [] arr)
{
for (int x=0; x<arr.length; x++)
{
//y从x+1开始和x角标的值进行比较,因为当前角标和当前角标比,没有意义。
for (int y=x+1; y<arr.length; y++)
{
if(arr[x]>arr[y])
{
//调用位置置换的方法
swap(arr,x,y);
}
}
}
}
//打印数组
public static void printArray(int arr[])
{
System.out.print("[");
for (int x=0; x<arr.length; x++)
{
if (x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]+"]");
}
}
//查找数组中的最大值
public static int getMax(int [] arr)
{
int max = arr[0];
for (int x =0; x<arr.length; x++)
{
if (arr[x]>max)
{
max = arr[x];
}
}
return max;
}
//查找数组中的最小值
public static int getMin(int [] arr)
{
int min = arr[0];
for (int x =0; x<arr.length; x++)
{
//如果
if (arr[x]<min)
{
min = arr[x];
}
}
return min;
}
//查找某个数字在数组中的位置(折半查找)
public static int getPosition(int arr[] ,int key)
{
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2;
//注意:折半查找必须是对有序数列进行,
//所以先调用一个排序方法对给出的数组进行排序操作。
selectSort(arr);
while (arr[mid]!= key)
{
if (arr[mid]>key)
{
max = mid - 1;
}
else if (arr[mid]<key)
{
min = mid + 1;
}
if (min > max)
return -1;
mid = (min+max)/2;
}
return mid;
}
//查找某个数字在数组中的位置
//返回要查找的数字在数组中第一次出现的位置,如果没有就返回-1
public static int getPosition_2(int arr[] ,int key)
{
for(int x=0; x<arr.length; x++)
{
if(arr[x]==key)
return x;
}
return -1;
}
}
以上就是今天分享的内容了,大家一起回忆一下吧,会记得更牢固哦~ 一起加油!加油!
|