1:什么是遍历数组?
遍历数组通俗点就是说把数组中的每个数都读一遍。
- 程序范例
class Demo01{
public static void main(String[] args){
ergodic(); //ergodic:遍历的英文
}
public static void ergodic(){
//int[] arr=new int[]{1,2,3,4,5,6};
int[] arr={1,2,3,4,5,6}; //创建一个对象为{1,2,3,4,5,6}的数组arr
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");//输出arr[i],i从0~5的对应元素的值
}
System.out.println(); //换行
for(int i=arr.length-1;i>=0;i--){
System.out.print(arr[i]+" ");//输出arr[i],i从5~0的对应元素的值
}
}
}
- 运行结果
c:\Users\Administrator\Desktop\javase02>javac Demo01.java
C:\Users\Administrator\Desktop\javase02>java Demo01
1 2 3 4 5 6
6 5 4 3 2 1
2: 什么是查找数组?
简单地就是将一个数赋给key,key在数组中寻找是否存在该数,将该数在数组中对应位置的角标提出。
- 线性查找法(find1)
- 二分查找法(find2)
- 程序范例
-
class Demo02{ public static void main(String[] args){ find1(); //查找角标===一分查找 find2(); //查找角标===二分查找 } public static void find1(){ int[] arr=new int[]{1,3,5,6,2,4}; int key=7; int index=-1; //定义角标的初值,没有对应角标的值输出角标为-1 for(int i=0;i<arr.length-1;i++){//从第一个到最后一个开始对比 if(key==arr[i]){ //判断查找的数有无在数组中存在 index=i; //有的话将角标值赋给index break; //跳出当前 } } System.out.println(index+" "); //输出index结果 } public static void find2(){ int[] arr={2,4,7,10,11,45,50,59,60,66,69,70,79}; int key=70; int index=-1; //定义角标的初值,没有对应角标的值输出角标为-1 int low=0; //定义最小角标为0 int high=arr.length-1; //定义最大角标为数组长度-1 while(true){ //开启循环 if(key==arr[(low+high)/2]){ //判断大小角标数之和除2的角标对应的值是否等于该数 index=(low+high)/2; //相等即赋值 System.out.println(index); break; } else if(key>arr[(low+high)/2]){ //若该数大于(大小角标除2在数组中对应的值 ) low=(low+high)/2+1;//(最小角标变成大小角标除2+1) } else{ high=(low+high)/2-1;//(最小角标变成大小角标除2-1) } if(low>high){//若最小角标在while循环中大于最大角标,即该数不存在数组中 System.out.println(index); break; } } } }
- 运行结果
c:\Users\Administrator\Desktop\javase02>javac Class29.java
C:\Users\Administrator\Desktop\javase02>java Demo02
-1
8
3:什么是扩容?
将一个数组的空间扩大或者减小。
class Demo03{
public static void main(String[] args){
resize();
}
public static void resize(){
int[] arr=new int[ ]{1,2,3,4,5};
int deltresize=1; //+1代表扩容,-1代表缩容
int[] newarr=new int[arr.length+deltresize];
//创建一个new数组newarr,长度为arr长+deltreaize
for(int i=0;i<Math.min(arr.length,newarr.length);i++){//将arr数组的值赋给new数组
newarr[i]=arr[i]; //角标对应赋值
}
for(int i=0;i<newarr.length;i++){
System.out.print(newarr[i]+" ");//输出数值newarr的值
}
}
}
c:\Users\Administrator\Desktop\javase02>javac Demo03.java
C:\Users\Administrator\Desktop\javase02>java Demo03
1 2 3 4 5 0
4:什么是数组排序?
将数组中的值由小到大进行排序,排序分为选择排序、冒泡排序、插入排序
- 选择排序selectedSort:
- 程序范例与结果
class Demo04{
public static void main(String[] args){
selectedSort();//选择排序
//概念,从角标0开始循环,和后面所以数比,把最小的数换到自身
}
public static void selectedSort(){
int[] nums=new int[]{1,5,6,4,2,3};
for(int i=0;i<nums.length;i++){//比较数,把最小的换到自身
for(int j=i+1;j<nums.length;j++){//对比数
if(nums[i]>nums[j]){
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
}
}
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+" ");
}
}
}
1,5,6,4,2,3
- -(j)(i+1)
- -
- - 效果图:将最小的数换到本身
- -
- -
i
c:\Users\Administrator\Desktop\javase02>javac Demo04.java
C:\Users\Administrator\Desktop\javase02>java Demo04
1 2 3 4 5 6
2.冒泡排序bubbleSort:
- 程序范例与结果
class Demo05{
public static void main(String[] args){
bubbleSort();//在 0-i 范围内,将该范围内最大的数字沉到i
}
public static void bubbleSort(){
int[] nums=new int[]{1,6,3,5,8,2};//创建一个new的nums的数组
for(int i=0;i<nums.length-1;i++){ //从0~nums.length-1 =========i
for(int j=0;j<nums.length-i-1;j++){//前后两个角标的值对比,大的数往后移
if(nums[j]>nums[j+1]){ //大的数移动到最后一项
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
for(int i=0;i<nums.length;i++){ //从0~nums.length
System.out.print(nums[i]+" ");//输出
}
}
}
1,6,3,5,8,2
- -
- -
- - 效果图:将最大的数换到最后
- -
- -
c:\Users\Administrator\Desktop\javase02>javac Demo05.java
C:\Users\Administrator\Desktop\javase02>java Demo05
1 2 3 5 6 8
3.插进排序insertSort:
- 程序范例与结果
class Demo06{
public static void main(String[] args){
insertSort();//选择排序
}
public static void insertSort(){
int[] nums=new int[]{6,5,2,3,1,4};//创建一个new的nums数组
for(int i=1;i<nums.length;i++){ //数组nums从角标1开始往后,主要前后两个角标值对比大小
for(int j=i;j>0;j--){ //前后角标值对比,j--:角标往左移1,然后继续对比
if(nums[j-1]>nums[j]){ //前角标值大于后一位时,前后角标值对换
int temp=nums[j];
nums[j]=nums[j-1];
nums[j-1]=temp;
}
}
}
for(int i=0;i<nums.length;i++){ //从0~nums.length
System.out.print(nums[i]+" ");//打印排序后的值
}
}
}
<--
<---
<---- //效果图
<-----
<------
c:\Users\Administrator\Desktop\javase02>javac Demo06.java
C:\Users\Administrator\Desktop\javase02>java Demo06
1 2 3 4 5 6