程序=算法+数据结构
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]);
}
}
}
|