A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© wenhb 中级黑马   /  2018-1-17 14:42  /  1390 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文



程序=算法+数据结构

1)算法,解决问题的流程/步骤(任何程序我们都可以用顺序、分支、循环三种结构实现);
2)数据结构,将数据按照某种特定的结构来保存,即数怎么存。设计良好的/合理的数据结构会导致好的算法。

1.数组1)相同数据类型元素的集合
2)数组是一种数据类型(引用类型)
3)数组的定义:
int[] arr = new int[10];
4)数组的初始化:
[Java] 纯文本查看 复制代码
//2.数组的初始化
int[] arr1 = new int[4]; //0,0,0,0
int[] arr2 = {1,4,7,9}; //1,4,7,9
int[] arr3 = new int[]{1,4,7,9}; //1,4,7,9
int[] arr4;
//arr4 = {1,4,7,9}; //编译错误,此方式只能声明同时初始化
arr4 = new int[]{1,4,7,9}; //正确

5)数组的访问:
  (1)通过(数组名.length)来获取数组的长度
[Java] 纯文本查看 复制代码
//3.数组的访问:
int[] arr = new int[3];
System.out.println(arr.length); //3
arr[0] = 100; //给arr中的第1个元素赋值为100
arr[1] = 200; 
arr[2] = 300;
//arr[3] = 400; //数组下标越界异常
System.out.println(arr[arr.length-1]); //300

(2)通过下标/索引来访问数组中的元素
[Java] 纯文本查看 复制代码
 //下标从0开始,最大到(数组名.length-1)
          int[] arr = new int[3];
 arr[0] = 100; //给arr中第1个元素赋值为100
 arr[1] = 200;
 arr[2] = 300;
 arr[3] = 400; //数组下标越界异常
 System.out.println(arr[arr.length-1]); //输出最后一个元素的值  

6)数组的遍历
[Java] 纯文本查看 复制代码
//4.数组的遍历:
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.println(arr[i]);
		}

7)数组的复制
1、System.arraycopy()方法:例如: System.arraycopy(a,1,a1,0,4);2、Arrays.copyOf()方法
[Java] 纯文本查看 复制代码
int[] a1 = Arrays.copyOf(a,6);
   a = Arrays.copyOf(a,a.length+1); //扩容   

8)数组的排序
(1)Arrays.sort(arr); //升序   Arrays类中的sort()使用的是“经过调优的快速排序法”; 比如int[],double[],char[]等基数据类型的数组,Arrays类之只是提供了默认的升序排列,没有提供相应的降序排列方法。
(2)冒泡排序算法:( 四个数冒三轮;每一轮都是从第1个元素开始冒; 每一次都是和它的下一个元素比;冒出来的就不带它玩了)
基本思想:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。

[Java] 纯文本查看 复制代码
//冒泡排序算法
public class BubbleSort {
	public static void main(String[] args) {
		/*
		 * 要求:
		 * 1)声明整型数组arr,包含10个元素
		 *   遍历数组,给每个元素赋值为0到99的随机数
		 *   遍历数组,输出每个元素的值
		 * 2)冒泡方式对arr进行排序----升序
		 * 3)输出arr排序后的结果
		 */
		int[] arr = new int[10];
		for(int i=0;i<arr.length;i++){
			arr[i] = (int)(Math.random()*100);
			System.out.println(arr[i]);
		}
		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;
				}
			}
		}
		System.out.println("排序后:");
		for(int i=0;i<arr.length;i++){
			System.out.println(arr[i]);
		}
		
	}
}


1 个回复

倒序浏览
6666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马