**java一维数组基础应用**
import java.util.Arrays;
/**数组是引用数据类型
* 数组下标越界异常(运行时异常)
* java.long.ArrayIndexOutOfBoundsException
* 空指针异常
* java.long.NullPointerException
* @author sashay
*
*/
public class Test1 {
public static void main(String[] args) {
// 定义一维数组,静态初始化
int arr3[]=new int[]{1,2,3};//1
int arr4[]={1,2,3};//2
//一维数组的动态初始化
int[] arr1=new int[3];//3
int arr2[]=new int[3];//4
arr1[0]=1;
arr1[1]=3;
arr1[2]=2;
//拷贝一个数组arr1
//方式一
int arr8[]=Arrays.copyOf(arr1, arr1.length);
//方式二
int arr11[]=arr1.clone();
//方式三
int[] arr12=new int[arr1.length];
System.arraycopy(arr1, 0, arr12, 0, arr1.length);
//方式四
int[] arr13=new int[arr1.length];
for (int i = 0; i < arr1.length; i++) {
arr13[i]=arr1[i];
}
//拷贝数组的一部分
int arr9[]=Arrays.copyOfRange(arr1, 0, 1);
//判断两个数组是否相同
if(Arrays.equals(arr1, arr8)){
System.out.println("两个数组相同");
}else{
System.out.println("两个数组不同");
}
//数组的升序排序
Arrays.sort(arr1);
//数组的输出
System.out.println(Arrays.toString(arr1));
//将数组arr1的所有元素都替换成-1
Arrays.fill(arr1, 0, 1, -1);
//把数组arr1转换成集合
Arrays.asList(arr1);
//一维数组遍历1 forEach方式
for(int i:arr1){
System.out.print(i+" ");
}
//---------------------------
//一维数组遍历2 普通for循环
for (int i = 0; i < arr1.length-1; i++) {
System.out.println(arr1[i]);
}
//一维数组遍历3 通过toString方法,把数组中的元素转换为字符串输出
System.out.println(Arrays.toString(arr1));
//数组元素的反序输出
for (int i=arr1.length-1;i>=0; i--) {
System.out.println(arr1[i]);
}
//从大到小排序 1
int tmp=0;
for (int i = 0; i < arr1.length-1; i++) {
for (int j = 0; j < arr1.length-i-1; j++) {
if(arr1[j+1]>arr1[j]){
tmp=arr1[j+1];
arr1[j+1]=arr1[j];
arr1[j]=tmp;
}
}
}
//输出
System.out.println(Arrays.toString(arr1));
//-----------------------------------------------
//从大到小排序 2
Arrays.sort(arr1);
for (int i=arr1.length-1;i>=0; i--) {
System.out.println(arr1[i]);
}
System.out.println("========================");
//求最大值
int max=arr1[0];
for (int i = 1; i < arr1.length-1; i++) {
if(arr1[i]>max){
max=arr1[i];
}
}
System.out.println(arr1[max]);
//========================================
//快速排序
int[] arr10={1,2,4,6,3,5,3,5};
//快速排序(升序排序)
quickSort(arr10,0,arr10.length-1);
System.out.println(Arrays.toString(arr10));
//折半查找(只能对排好的数组使用这个查找方法),12是在数组arr10待查找的数
int pos=halfSrch(arr10,12);
System.out.println("12的位置是"+pos);
}
private static int halfSrch(int[] arr10, int num) {
//设置标志位min,max的起始位置,
int min=0,max1=arr10.length-1,mid=0;
while(min<=max1){
//求mid中间数
mid=(min+max1)/2;
//判断
if(arr10[mid]<num){
min=mid+1;
}else if(arr10[mid]>num){
max1=mid-1;
}else{
return mid;
}
}
//没找到的话返回-1
return -1;
}
private static void quickSort(int[] arr10, int low, int high) {
// 声明两个变量
int i1=low;
int j1=high;
while(i1>j1){
return;
}
//设置一个基准数,一般是数组的第一位
int tmp=arr10[low];
//i从左向右搜索,遇到比它大的数就停下来
//j从右向左搜索,遇到比比它小的数就停下来,然后交换i和j所指向的值
int t=0;
while(i1<j1){
//j开始搜索
while(tmp<=arr10[j1]&&i1<j1){
j1--;
}
//i开始搜索
while(tmp>=arr10[i1]&&i1<j1){
i1++;
}
//判断,交换
if(i1<j1){
t=arr10[i1];
arr10[i1]=arr10[j1];
arr10[j1]=t;
}
}
//判断,折半,先左边后右边
if(i1==j1){
arr10[low]=arr10[i1];
arr10[i1]=tmp;
}
//将前半部分快速排序
quickSort(arr10,low,i1-1);
//将后半部分快速排序
quickSort(arr10,i1+1,high);
}
}
java一维数组基础
最新推荐文章于 2024-07-21 22:27:18 发布