day05_数组_冒泡排序_Arrays_20150805

day05_数组_20150805


-------------------------回顾:---------------------------

1.循环:反复执行一段相同或相似的代码

2.循环三要素:

   1)循环变量的初始化

   2)循环的条件(以循环变量为基础)

   3)循环变量的改变(向着循环的结束变)

   循环变量: 在循环过程中所改变的那个量

3.循环结构:

   1)while:先判断后执行

   2)do...while:先执行后判断

                       第1要素与第3要素相同时

   3)for:应用率最高的

4.break:跳出循环

   continue:跳过循环体中剩余语句而进入下一次循环



=====================笔记:========================

1.各种循环结构的更佳适用情况

   1)while: "当..."循环

   2)do...while: "直到..."循环

                        第1要素与第3要素相同时首选

   3)for: 固定次数循环----应用率最高的

2.嵌套循环:

   1)循环中套循环

   2)多行多列时使用,外层循环控制行,内层循环控制列

   3)执行过程: 外层循环走一次,内存循环走所有次

   4)能用一层就不用两层,能用两层就不用三层,层数越少越好

         如果超过三层循环,说明设计有问题

   5)break只能跳出一层循环

3.程序=算法+数据结构

      算法:解决问题的流程/步骤(顺序、分支、循环)

      数据结构:将数据按照某种特定的结构来保存--数怎么存

                      设计合理的数据结构会导致好的算法

4.数组:

   1)相同数据类型元素的集合

   2)数组是一种数据类型(引用类型)

   3)数组的定义:

          int[] arr = new int[4];

   4)数组的初始化: 给数组中的元素赋值

      int[] arr = new int[4];             //0,0,0,0
      int[] arr = {1,4,5,7};                //1,4,5,7
      int[] arr = new int[]{1,4,5,7};  //1,4,5,7
      int[] arr;
      arr = {1,4,5,7}; //编译错误,此方式只能声明同时初始化

      arr = new int[]{1,4,5,7};  //正确

   5)数组的访问: 通过下标/索引来访问数组中的元素

                           下标从0开始,最大到.length-1

      int[] arr = new int[4];
      System.out.println(arr.length);  //4
      arr[0] = 100; //给arr中的第1个元素赋值为100
      arr[1] = 200;
      arr[2] = 300; //给arr中的第3个元素赋值为300
      arr[3] = 400;
      arr[4] = 500; //数组下标越界异常

      System.out.println(arr[arr.length-1]); //输出最后一个元素

   6)数组的遍历:

         int[] arr = new int[10];
         for(int i=0;i<arr.length;i++){ //遍历arr数组
            arr[i] = 100;  //给arr中每个元素都赋值为100
         }
         for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
         }
        for(int i=arr.length-1;i>=0;i--){
           System.out.println(arr[i]);

        }

   7)数组的复制:

     System.arraycopy(a,1,a1,0,4);
     int[] a1 = Arrays.copyOf(a,6);

     a = Arrays.copyOf(a,a.length+1);

   8)数组的排序:

          Arrays.sort(arr); //升序排


----------------------------------------总结---------------------------------------


1.java中可以动态声明数组----具体用法见代码
 Myfoundametal.day05.Test03.java

代码如下:

package day05;

import java.util.Scanner;

//可以动态声明数组
public class Test03 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int[] arr = new int[n];		
		for(int i=0;i<arr.length;i++){
			arr[i]=(int)(Math.random()*100);
		}
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+"\t");
		}
		System.out.println("\n");
		
		
		int num = 3;
		int[] arr2=new int[num*3];//正确
		System.out.println("arr2.length="+arr2.length);
		
		
	}

}


2.数组复制方式

  1)System.arraycopy方法

      --public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length)

      ----src:源数组

      ----srcPos:源数组中的起始位置

      ----dest:目标数组

      -----destPos: 目标数组中的起始位置

      -----length:要复制的数组元素的数量

   代码示例:

   

package day05;

import java.lang.reflect.Array;
import java.util.Arrays;

public class Test01 {
	public static void main(String[] args){
		int[ ] arr = new int[]{ 4,5,6,8};
		System.out.println(arr);
		//int [ ] arr1 = new int [ 5 ] {10,20,30,40,50 } ;//编译错误
		arr=Arrays.copyOf(arr, 5);
		System.out.println(arr);
		
		int[] arr2=new int[2];
		System.arraycopy(arr, 0, arr2, 0, 2);
		System.out.println(arr2.toString());
		
		//System.out.println(Array.getLength(arr2));
		
	}
}


   2)java.util.Arrays.copyOf方法

      --类型[ ]  newArray = Arrays.copyOf ( 类型[ ]  original , int  newLength )

      ----生成的新数组是原始数组的副本;

    ---newLength小于源数组,则进行截取;(自己通过代码演示效果);

    ---newLength大于源数组,则用0或 null进行填充;

   用法代码示例:

package day05;

import java.util.Arrays;

public class MaxOfArray {

	public static void main(String[] args) {
		int[] arr = new int[10];
		for(int i=0;i<arr.length;i++){
			arr[i]=(int)(Math.random()*100);
		}
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+"\t");
		}
		System.out.println();
		//找出最大值
		int max=arr[0];
		for(int i=1;i<arr.length;i++){
			if(arr[i]>max){
				max=arr[i];
			}
		}
		System.out.println("Max="+max);
		
		//1--System.arraycopy();
		int[] arrTemp = new int[arr.length+1];
		System.arraycopy(arr, 0, arrTemp, 0, arr.length);
		arrTemp[arrTemp.length-1] = max;
		arr = arrTemp;
		
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+"\t");
		}
		System.out.println();
		
		//2--Arrays.copyOf();
		arr = Arrays.copyOf(arr, arr.length+1);
		arr[arr.length-1] = max;
		
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+"\t");
		}
		System.out.println();
		
		
		int[] arr1=new int[8];
		System.arraycopy(arr, 0, arr1, 1, 7);
		for(int i=0;i<arr1.length;i++){
			System.out.print(arr1[i]+"\t");
		}
		System.out.println();
		
		arr = arr1;
		arr1[0] = 999;
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+"\t");
		}
		
	}

}


3.冒泡原理

  1)n个数冒n-1轮

   2)每一轮都是从第一个元素开始比

   3)每一次都是和他的下一个元素比

   4)冒出来的数就不参与比较了

示例代码:

package day05;

import java.util.Arrays;

public class SortDemo {

	public static void main(String[] args) {
		int[] arr=new int[5];
		for(int i=0;i<arr.length;i++){
			arr[i]=(int)(Math.random()*100);
		}
		//1--java.util.Arrays.sort();
		//Arrays.sort(arr);
		
		//2--冒泡
		for(int i=0;i<arr.length-1;i++){
			for(int j=0;j<arr.length-1-i;j++){
				if(arr[j]>arr[j+1]){
					int t=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=t;
				}
			}
		}
		//输出
		for(int i=0;i<arr.length;i++){
			System.out.println(arr[i]);
		}
		
	}

}


  
4.java.util.Random;
  --Random ran = new Random();
  --Myfoundametal.day05.RandomDemo.java

代码如下:

package day05;

import java.util.Random;
import java.util.Arrays;

public class RandomDemo {

	public static void main(String[] args) {
		Random ran = new Random();
		int[] arr=new int[10];
		for(int i=0;i<arr.length;i++){
			arr[i]=ran.nextInt(100);
		}
		System.out.println(Arrays.toString(arr));
	}

}

 
5.java.util.Arrays;
   -- Arrays.sort(arr);     --排序
   -- Arrays.toString(arr); --打印数组元素
      ---可以把数组的元素都打印出来,如[1,2,3];


---------------遗留问题---------------------

1.native关键字?

答:

其实就是JNI。
native是方法修饰符。Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。
因为在外部实现了方法,所以在java代码中,就不需要声明了,有点类似于借口方法。
Native可以和其他一些修饰符连用,但是abstract方法和Interface方法不能用native来修饰。
(先写这些,后来学到再详细了解)


2.Array类和Arrays类

答:java.lang.reflect.Array
此类提供了动态创建和访问 Java 数组的方法。

java.util.Arrays
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。 

二者有些区别,具体看文档吧。
前者倾向于操作数组的单个元素,后者倾向于操作整个数组。

-------------------------------------------------------------------------------




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值