2020/8/6 QQ1017871939 一维数组和冒泡排序

                                    8.6小白学习数组(一维数组)

在这里插入图片描述
在这里插入图片描述

这是正常编写代码的时候。记住数组的下标是从0开始,而不是1开始,这里我们虽然定义了30,这里的30是30个元素的意思。因为从0开始,所以达到的是29,而不是30.所以我们数组下标写30是错误的,越界的!

我来图片表示一下为什么数组下标从0开始。
在这里插入图片描述

如果出现数组下标为负数或者越界的时候。

在这里插入图片描述

就会出现编译正确而抛出异常的问题。Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 30
at ArraryTest.func1(ArraryTest.java:20)
at ArraryTest.main(ArraryTest.java:25)

              二 访问数组

在这里插入图片描述

//定义数组

public class ArraryTest2
{ //错误:缺少数组维
  //	int i[] =new int[];
	int i[] =new int[10];
	
	float[] f =new float[10];

    boolean b[] =new boolean[10];
    //引用数据类型数组
	Object obj[] =new Object[10]; 
	public void func1(){
	 //通过for循环语句赋值
	 for (int x=0;x<i.length ;x++ )
	 {
		 i[x] =x;
	 }
	  //通过循环语句遍历我们数组
	  for (int index=0;index<i.length ;index++ )
	  {
		  System.out.println("i["+index+"]"+i[index]);
	  }
	 //演示float数组的默认情况;
	 System.out.println("------------");
	 //增强for循环,遍历数组,每次去数组的元素并赋值给a变量。
	 //直到取完整个数组
	 for (float a:f)
	 {
           System.out.println(a);
	 }

	  for (boolean c:b)
	 {
           System.out.println(c);
	 }
	 //局部变量必须现赋值后使用
	   for (Object o:obj)
	 {
           System.out.println(o);
	 }
	}
	public static void main(String[] args){
	 ArraryTest2 tc =new ArraryTest2();
	 tc.func1();

	}
};

boolean类型默认值为false

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

                                            遍历数组

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

例子
//冒泡排序
public class Maopao
{

	public void func1(){
   int[] a ={90,10,55,33,100,77,88,66,99};
   //外层循环是循环要比的轮数
   for (int i=0;i<a.length-1 ;i++ )
   {   //内循环比的是每轮要比较的次数
	   for(int j=0;j<a.length-1-i;j++)
	   {   int temp =0;
		   if(a[j]>a[j+1]){
			 temp =a[j];
			 a[j]=a[j+1];
			 a[j+1]=temp;
		   }
	   }
   }
   for(int i :a){
    System.out.println(i);
   }
	}
	public static void main(String[] args){
	 Maopao tc =new Maopao();
	 tc.func1();

	}
};

例子得到解析:里面一共9个数,9个数第一轮从左边第一个数开始和后面的8个数比较要比较8次,因为自己不可能跟自己比较。等到找到最大的数排在后面。又开始新的一轮也就是第二轮,又从左边第一个开始和后面的数字开始比较,(注意:最后一个数不用比较了,因为它是最大的。)所以也就是得知最后一个数字不用比较,那么第二轮开始也就剩下8个数,那么剩下的8个数里面左边第一个开始是它自己开始,那么也就比较7次。以此类推。就会发现规律。第一轮比较8次、第二轮比较7次、第三轮比较6次…第八轮比较1次。也就是用两个for循环。第一个for循环表示轮次,第二个for循环表示次数。 轮次是数组长度-1。比较次数也是数组长度-1.所以for循环内的表达式清除了。 然后是里面的核心算法。有的人会想不明白为什么引用temp这个参数空值,那么我举个例子吧。当你有一瓶酒和一瓶醋,那么两个要互相换,不可能是拿酒直接倒进去醋,拿醋直接倒进去酒,那样子会破坏。平常生活中我们都是拿一个空的瓶子来接,然后醋瓶子空了就可以拿酒倒进去了。所以里面的temp就相当于一个空瓶子的作用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值