精华内容
下载资源
问答
  • 1.数组中的类型是唯一确定的.所有元素必须一致 2.数组本身是属于引用数据类型的,但是里面的元素既可以是基本数据类型也可以是引用数据类型 3.数组的长度一旦给定就无法改变 数组的种命名格式: 1.声明类型: 数据...

    数组的概念

    概念

    :用来存储一组相同数据类型的集合
    引用数据类型:类 接口 数组

    特点:

    1.数组中的类型是唯一确定的.所有元素必须一致
    2.数组本身是属于引用数据类型的,但是里面的元素既可以是基本数据类型也可以是引用数据类型
    3.数组的长度一旦给定就无法改变

    数组的两种命名格式:

    1.声明类型:
    数据类型[] 数组名;
    数据类型 数组名;
    2.数组的动态初始化
    给定数组的长度由系统分配空间和初始值;
    3.格式:数据类型[ ] 数组名=new 数据类型[长度];
    4. 数组中的数据的存取
    5. 数组的索引:数组中元素的序号
    从0开始,最大值就是数组的长度减1
    数组的元素赋值
    数组名[索引]=赋值;
    取值为:数组名[索引值]

    数组的内存分析

    栈:存储局部变量,方法的执行,没有初始值
    堆:new出来的东西,有初始值
    注意:如果堆中没有栈中变量指向时,就会成为垃圾等待GC自动回收

    数组的静态初始化:

    静态初始化"
    给定数组中的元素,由系统根据元素个数而开辟空间并且赋值"
    格式:数据类型[] 数组名= new 数据类型[]{元素1,元素2,元素3…}
    简写的形式为:数据类型[]数组名={元素1,元素2,元素3…},注:只有第一次给元素赋值的时候可以这么写,重新给元素赋值不能这么写
    获取数组的长度:数组名.length

    数组中常见的两种异常:

    第一种:空指针异常:java.lang.NullPointerException null调用里面的东西
    第二种:数组角标越界异常:java.lang.ArrayIndexOutOfBoundsException 索引超出了最大范围

    数组的案例:

    点名系统: 从班级所有人的姓名中随机抽选出来一个

    •  1. 构建一个String[] 用来存储全班同学的姓名
      
    •  2. 生成一个随机数,作为索引值,从数组从把该索引对应的元素取出来
      
    • a. 如何生成一个随机数
    •  1. 创建对象
      
    •  	Random 对象名 = new Random();(导包)
      
    •  2. 生成随机数:
      
    •  	对象名.nextInt(int bound);//bound: 范围  
      
    •  				nextInt(10);// [0,10)
      

    代码块:
    public class TextDemo22 {
    public static void main(String[] args) {
    String[] st = {“张晓小”, “丁行行”, “靳栋”, “杨志远”, “胡辣汤”, “牛肉面”, “新疆盖饭”, “回锅肉”, “葱爆羊肉”};

        for (int j = 0; j <st.length ; j++) {
            Random rd = new Random();
            int i = rd.nextInt(st.length);//表示生产随机数的范围,一般指的是数组的边界
            
            System.out.println(st[i]);
        }
    }
    

    }

    数组的遍历:

    案例, 打印出来的形式为
    [1,2,3,4,5,6,7]

    数组的逆序

    //数组的逆序
    //思路:数组的逆序就是第一个元素和最后一个元素互换位置,第二个元素与倒数第二个元素的互换位置,以次类推
    public class TestDemo44 {
    public static void main(String[] args) {
    int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    System.out.println(“逆序之前的数组为:”);
    ArrayUtil.arrprint(arr);
    int temp=0;
    for (int i = 0; i <arr.length-1 ; i++) {
    temp=arr[i];
    arr[i]=arr[arr.length-1-i];
    arr[arr.length-1-i]=temp;
    }
    System.out.println(“逆序之后的数组为:”);
    ArrayUtil.arrprint(arr);

    }
    

    }

    数组中两个元素的互换位置

    代码:
    //将数组中的两个元素互换位置
    public class TextDemo4 {
    public static void main(String[] args) {
    int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

        System.out.println("请输入两个你要互换位置的索引");
        System.out.println("请输入第一个你要互换元素位置的索引号");
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        System.out.println("请输入第二个你要互换位置的索引号");
        int j = sc.nextInt();
        int temp=0;
        if (i < 0||i>ints.length-1||j<0||j>ints.length-1) {
            System.out.println("超出索引范围,退出程序");
        }else{
            System.out.println("交换前的数组为");
            ArrayUtil.arrprint(ints);
            temp=ints[i];
            ints[i]=ints[j];
            ints[j]=temp;
            System.out.println("两个元素交换后的顺序为");
            ArrayUtil.arrprint(ints);
        }
    
    }
    

    }

    数组打印类型的封装

    public class TextDemo33 {
    public static void main(String[] args) {
    int[] ints = {1, 2, 3, 4, 5, 6, 7};
    // ArrayUtil.getMaxAndMin(ints);
    System.out.print("[");
    for (int i = 0; i <ints.length; i++) {
    if (i == ints.length-1) {
    System.out.print(ints[i]+"]");
    }else{
    System.out.print(ints[i]+", ");
    }
    }

    }
    

    }

    展开全文
  • C++实现动态数组

    2020-03-31 21:43:57
    C++实现动态数组 1. 数组初始化 2. 给数组赋值 3. 打印数组 4. 增加数组长度 5. 数组最后一个值替代最小值 6. 逆置数组元素 7. 逆置数组中指定位置范围的元素 ...12. 将数组中的前m位与后n为的位置互换 整体代码如下...

    C++实现动态数组

    1. 数组初始化
    2. 给数组赋值
    3. 打印数组
    4. 增加数组长度
    5. 数组最后一个值替代最小值
    6. 逆置数组元素
    7. 逆置数组中指定位置范围的元素
    8. 删除数组中值为x的所有元素
    9. 删除所有介于s和t之间(包含s与t)的元素
    10. 有序表中删除相同元素
    11. 合并两个有序数组,合并结果存入第三个数组
    12. 将数组中的前m位与后n为的位置互换

    整体代码如下:

    #include<iostream>
    
    using namespace std;
    
    struct SeList{//struct结构体与class唯一的区别就是默认访问权限不一样 
    	int *data;//struct默认是public的访问权限,所以方便用于作为节点结构体 
    	int Max;//动态数组的整体思想是在结构体内声明指针,最大长度,实际长度,在外部函数中生成实际的数组,数组的这三个主要指标放在了结构体中 
    	int length;
    };
    
    void initList(SeList &list,int x){//数组初始化 
    	list.data=new int[x];
    	list.Max=x;
    	list.length=0; 
    }
    
    void setList(SeList &list){//给数组赋值 
    	for(int i=0;i<list.Max;++i){
    		list.data[i]=i+1;
    		if(list.length<list.Max){
    			list.length++;
    		}
    	}
    }
    
    void set_List(SeList &list){//给数组赋值 
    	for(int i=0;i<list.Max/2;++i){
    		list.data[i]=i+1;
    		if(list.length<list.Max/2){
    			list.length++;
    		}
    	}
    }
    
    void printList(SeList &list){//打印数组 
    	for(int i=0;i<list.length;++i){
    		cout<<list.data[i]<<" ";
    	}
    	cout<<endl;
    }
    
    void increaseList(SeList &list,int len){//增加数组长度 
    	int *p=list.data;
    	list.data=new int[list.Max+len];
    	for(int i=0;i<list.length;++i){
    		list.data[i]=p[i];
    	}
    	list.Max=list.Max+len;
    	delete[] p;
    }
    
    bool deleteMin(SeList &list,int &value){//数组最后一个值替代最小值 
    	if(list.length==0){
    		return false;
    	}
    	value=list.data[0];
    	int a=0;//辅助变量,记录最小元素的位置 
    	for(int i=0;i<list.length;++i){
    		if(value>list.data[i]){
    			value=list.data[i];
    			a=i;
    		}
    	}
    	list.data[a]=list.data[list.length-1];
    	return true;
    }
    
    bool reverseList(SeList &list){//逆置数组元素 
    	if(list.length==0){
    		return false;
    	}
    	int temp=0;//辅助变量 
    	for(int i=0;i<list.length/2;++i){//无需考虑数组元素个数的奇偶性,因为length/2取整 
    		temp=list.data[i];
    		list.data[i]=list.data[list.length-i-1];
    		list.data[list.length-i-1]=temp;
    	}
    	return true; 
    }
    
    bool reverse_List(SeList &list,int m,int n){//逆置数组中指定位置范围的元素
    	if(list.length==0||m>=n){
    		return false;
    	}
    	int temp=0,k=0;
    	for(int i=m-1;i<=(n+m-2)/2;++i){
    		temp=list.data[i];
    		list.data[i]=list.data[n-1-k];
    		list.data[n-1-k]=temp;
    		++k;
    	}
    }
    
    void deleteX(SeList &list,int x){//删除数组中值为x的所有元素 
    	int k=0;//记录非x的元素个数,也就是保留下来的元素个数 
    	for(int i=0;i<list.length;++i){//顺序扫描数组,每判断一个非x值就加入结果数组 
    		if(list.data[i]!=x){//非x元素保留下来,这里利用了i的值一定大于等于k的值,所以在一个循环中就可以解决问题 
    			list.data[k]=list.data[i];
    			++k;
    		}
    	}
    	list.length=k;//修改数组长度 
    }
    
    bool deleteST(SeList &list,int s,int t){//删除所有介于s和t之间(包含s与t)的元素 
    	if(s>=t){
    		cout<<"输入范围错误"<<endl; 
    		return false;
    	}
    	if(list.length==0){
    		cout<<"顺序表为空"<<endl;
    		return false;
    	}
    	int k=0;// 记录不在范围s与t之间的元素的个数 
    	for(int i=0;i<list.length;++i){//顺序扫描数组,每判断到一个不属于s与t之间的元素就加入结果数组 
    		if(list.data[i]<s||list.data[i]>t){
    			list.data[k]=list.data[i];
    			++k;
    		}
    	}
    	list.length=k;//修改数组长度 
    	return true;
    } 
    
    void deleteSame(SeList &list){//有序表中删除相同元素
    	int k=1;//非相同元素的个数 
    	for(int i=1;i<list.length;++i){// 因为第一个肯定不重复,从第二个元素开始顺序扫描数组,每判断到一个不是相同的元素就将其加入结果数组 
    		if(list.data[i]!=list.data[i-1]){
    			list.data[k]=list.data[i];
    			++k;
    		}
    	}
    	list.length=k;//修改数组长度 
    }
    
    bool addList(SeList list1,SeList list2,SeList &list){//合并两个有序数组,合并结果存入第三个数组 
    	if(list1.length+list2.length>list.Max){//如果前两个数组的长度之和大于第三个数组长度最大值,无法合并,返回错误 
    		return false;
    	}
    	int i=0;//辅助变量,记录第一个数组的下标 
    	int j=0;//辅助变量,记录第二个数组的下标 
    	int k=0;//辅助变量,记录第三个数组的下标 
    	while(i<list1.length&&i<list2.length){//这里使用while循环,对判断条件的设置比较关键;当两个数组都没有遍历完时,比较两个数组最前面的值,较小者加入结果数组 
    		if(list1.data[i]<=list2.data[j]){
    			list.data[k]=list1.data[i];
    			k++;
    			i++; 
    		}else{
    			list.data[k]=list2.data[j];
    			k++;
    			j++;
    		}
    	}
    	while(i<list1.length){//若只有第一个数组还没有遍历完,第一个数组剩余数据是表中较大的了,按顺序加入结果数组即可 
    		list.data[k]=list1.data[i];
    		k++;
    		i++;
    	}
    	while(j<list2.length){
    		list.data[k]=list2.data[j];
    		k++;
    		j++;
    	}
    	list.length=k;
    	return true;
    }
    
    bool invertList(SeList &list,int m,int n){//将数组中的前m位与后n为的位置互换,可以看做先将数组整个逆置,之后对目前的两个数组分别再逆置,调用指定范围的逆置函数实现 
    	 reverseList(list);
    	 reverse_List(list,1,n);
    	 reverse_List(list,n+1,n+m);
    	 return true;
    } 
    
    bool insert_List(SeList &list,int x){//若查到值为x的元素,将其与其后的元素交换位置,若查不到,则将其插入顺序表中使得,顺序表仍然递增 
    	 int low=0;
    	 int n=list.length-1;
    	 int high=n;
    	 int mid;
    	 while(low<=high){
    	 	mid=(low+high)/2;
    	 	if(list.data[mid]==x){
    	 		break;
    		 }else if(list.data[mid]<x){
    		 	low=mid+1;
    		 }else{
    		 	high=mid-1;
    		 }
    	 }
    	 if(list.data[mid]==x&&mid!=n){
    	 	list.data[mid]=list.data[mid+1];
    	 	list.data[mid+1]=x;
    	 	cout<<x<<endl;
    	 }
    	 if(low>high){
    	 	for(int i=n;i>high;--i){
    	 		list.data[i+1]=list.data[i];
    	 		list.data[i+1]=x;
    	 		cout<<x<<endl;
    		 }
    		 list.length++;
    	 }
    }
    
    int main(){
    	SeList list1;
    	initList(list1,15);
    	setList(list1);//初始化并设置第一个数组 
    	printList(list1);
    	
    	SeList list2;
    	initList(list2,15);
    	set_List(list2);
    	printList(list2);//初始化并设置第二个数组 
    	
    	SeList list3;
    	initList(list3,30);
    	addList(list1,list2,list3);
    	printList(list3);
    	
    	invertList(list1,6,9);
    	printList(list1);
    
    	
    	insert_List(list2,5);
    	printList(list2);
    	
    	
    	return 0;
    }
    
    展开全文
  • if(arr[ii]>arr[mx]){ //如果当前大于数组中的最小值 dtod(mx,ii); //数据交换 mx=colt(z,fi); //重新获取步长内的最小值 }} if(arr[ii]>arr[pi]){ //动态维护本段的最大...
  • 3.18 需要根据条件把一个复杂的表达式赋给两个变量中的一个。可以用下面这样的代码吗?((condition)?a:b)=complicated_expression;  3.19 我有些代码包含这样的表达式。a?b=c:d有些编译器可以接受,有些却不能。...
  • 3.18 需要根据条件把一个复杂的表达式赋给两个变量中的一个。可以用下面这样的代码吗?((condition) ? a : b)= complicated_expression; 70 3.19 我有些代码包含这样的表达式。a ? b=c : d 有些编译器可以接受,...
  • 3.18 需要根据条件把一个复杂的表达式赋给两个变量中的一个。可以用下面这样的代码吗?((condition)?a:b)=complicated_expression; 3.19 我有些代码包含这样的表达式。a?b=c:d有些编译器可以接受,有些却不能。为...
  •  3.18 需要根据条件把一个复杂的表达式赋给两个变量中的一个。可以用下面这样的代码吗?((condition)?a:b)=complicated_expression; 3.19 我有些代码包含这样的表达式。a?b=c:d有些编译器可以接受,有些却不能。...
  • 《你必须知道495C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.18 需要根据条件把一个复杂的表达式赋给两个变量中的一个。可以用下面这样的代码吗?((condition) ? a : b)= complicated_expression; 41  3.19 我有些代码包含这样的表达式。a ? b=c : d 有些编译器可以接受...
  • 3.18 需要根据条件把一个复杂的表达式赋给两个变量中的一个。可以用下面这样的代码吗?((condition) ? a : b)= complicated_expression; 41  3.19 我有些代码包含这样的表达式。a ? b=c : d 有些编译器可以接受...
  • 你必须知道495C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    3.12 我需要根据条件把一个复杂的表达式赋值给两个变量中的一 个。可以用下边这样的代码吗? ((condition) ? a : b) = complicated expression; . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 目录iii ...
  • 实例140 删除有序数组中的重复元素 实例141 数组合并 实例142 利用数组计算平均成绩 实例143 数组中整数的判断 实例144 判断二维数组中是否有相同的元素 实例145 计算两个矩阵和 实例146 判断回文数 实例147...
  • 实例140 删除有序数组中的重复元素 实例141 数组合并 实例142 利用数组计算平均成绩 实例143 数组中整数的判断 实例144 判断二维数组中是否有相同的元素 实例145 计算两个矩阵和 实例146 判断回文数 实例147...
  • 实例043 将二维数组中的行列互换 实例044 利用数组随机抽取幸运观众 实例045 用数组设置JTable表格的列名与列宽 3.2 数组操作 实例046 数组的下标界限 实例047 按钮控件数组实现计数器界面 实例048 复选框...
  • 实例043 将二维数组中的行列互换 实例044 利用数组随机抽取幸运观众 实例045 用数组设置JTable表格的列名与列宽 3.2 数组操作 实例046 数组的下标界限 实例047 按钮控件数组实现计数器界面 实例048 复选框...
  • 实例043 将二维数组中的行列互换 53 实例044 利用数组随机抽取幸运观众 54 实例045 用数组设置JTable表格的列名与列宽 55 3.2 数组操作 57 实例046 数组的下标界限 57 实例047 按钮控件数组实现计数器界面 58 实例...
  • 实例043 将二维数组中的行列互换 53 实例044 利用数组随机抽取幸运观众 54 实例045 用数组设置JTable表格的列名与列宽 55 3.2 数组操作 57 实例046 数组的下标界限 57 实例047 按钮控件数组实现计数器界面 58 实例...
  • 如图3中的两个结构就不符合树的定义,因为它们都有相交的子树。 二、树的结点 树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树称为结点的度(Degree)。度为0的结点称为叶结点&#...
  • 定义 数组是一种排列有序的数据结构,包含于数组中的变量被称为数组的元素, 它们都有相同的类型。 数组声明 int [] array1 = new int[5]; int [,,] array3 = new int[10,20,30]; int [] array1 = new int[] {1,2,4}...
  • Java经典编程300例(code)

    千次下载 热门讨论 2013-01-09 10:26:53
    实例032 将二维数组中的行列互换 45 实例033 利用数组随机抽取幸运观众 47 实例034 用数组设置JTable表格的 列名与列宽 49 实例035 使用按钮控件数组实现 计算器界面 51 实例036 通过复选框控件数组实现 添加多复...
  • o 4.12 我需要根据条件把一个复杂的表达式赋值给两个变量中的一个。可以用下边这样的代码吗? ((condition) ? a : b) = complicated_expression; * 5. 指针 o 5.1 我想声明一个指针并为它分配一些空间, 但却...
  • 在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前件结点;另一个称为右指针,用以指向其后件结点。这样的表称为双向链表。 在线性链表中,各数据元素结点的存储空间可以是不连续的...
  • 实例026 实现两个变量的互换(不借助第3个变量) 2.3 条件语句 实例027 判断某一年是否为闰年 实例028 验证登录信息合法性 实例029 为新员工分配部门 实例030 用Switch语句根据消费金额计算折扣 实例031 ...
  • 然后,在自己Application调用Utils.init(this);进行初始化 添加混淆: -keep class com.easytools.tools.DialogUtils {*;} -dontwarn com.easytools.tools.** -keep class com.easytools.constant.**{*;} 所需...
  • 引擎不要求变量总是存储与初始化时相同类型的值。 <h3><code>undefined</code> vs "undeclared" 当前没有值的变量,其实是当前值为<code>undefined。两者区别是: - <code>undefined的变量在...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

互换两个相同长度数组中的值