获取数组长度:
public class Dem03 {
public static void main(String[] args) {
int[] nums = {11,22,33,44,23,56,24,78,94,71,66,49,29,100,234,15,36,75,67};
//遍历数组
for(int i =0;i<19;i++){
System.out.print(nums[i]+" ");
}
//数组名.length:获取数组元素个数(数组长度)
int changDu =nums.length;
System.out.println("nums数组中元素个数:"+changDu);
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+" ");
}
}
}
遍历数组
遍历数组:将数组中的元素依次取出来
1)普通for循环来遍历
for(int i =0; i<数组名.length;i++){
System.out.println(数组名[i]);
}
2)增强for循环
for(数据类型 变量名:数组名){
System.out.println(变量名);
}
public class Demo03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] nums={11,22,33,44,21,313,34,434,431,13,4,34};
//普通for循环来遍历
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+" ");
}
System.out.println();
System.out.println("-------------------------------");
//增强for循环
for(int a:nums){
System.out.print(a+" ");
}
}
}
获取数组中的最大值或者最小值
思路:
1)假设数组中的第一个元素为最大值或者最小值
2)将数组中的元素依次取出来与这个最大值或者最小值进行比较,如果取出来的元素 比最大值(最小值)大(小),那么该元素成为新的最大值(最小值)大(小), 那么该元素成为新的最大值(最小值)
3)比较完所有元素之后,获得最大值(最小值)
public class Demo04 {
public static void main(String[] args) {
//求数组最大值和最小值
int[] nums={43,24,34,56,65,78,28};
//假设数组中的第一个元素为最大值
int max=nums[0];
//假设数组中的第一个元素为最小值
int min=nums[0];
for(int i=0;i<nums.length;i++){
//将每个数进行比较
if(nums[i]>max){
max=nums[i];
}
}
for(int j=0;j<nums.length;j++){
if(nums[j]<min){
min=nums[j];
}
}
System.out.println("最大值为"+max+" 最小值"+min);
}
}
向数组中插入数据,插入数据后,数组保持原来的排序规则
思路:
1)新建一个长度比原来数组长度大1的数组
2)将原来数组中的数据依次存入到新的数组中
3)获取插入的数据
4)将插入数据依次与数组中的数据进行比较获得插入位置(下标)
5)从插入位置开始及之后的元素依次往后移动一位(注意:从最后元素开始移动)
6)将插入数据存储到插入位置
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
/*
* 有一个数组元素按照从大到小顺序排列的数组{99,85,82,63, 60},
* 现在要插入一个数据,数据插入之后,要保证数组依然是按照从大到小顺序排列
*/
int[] arr1 = {99,85,82,63,60};
//(1)声明一个长度比原来数组长度大1的数组,将原来数组元素存储到新数组中
int[] arr2 = new int[arr1.length+1];
for(int i =0;i<arr1.length;i++){
arr2[i]=arr1[i];
}
System.out.println("插入元素之前的数组:");
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]+" ");
}
System.out.println();
//(2)通过键盘录入获取你想要插入的数据
Scanner input = new Scanner(System.in);
System.out.println("请输入你想要插入的数据:");
int insert = input.nextInt();
//(3)通过比较获取插入数据在数组中的插入位置(通过循环比较实现)
//声明一个int类型的变量index来存储插入数据在数组中的插入位置
int index = arr2.length-1;
for(int i = 0;i<arr2.length;i++){
if(insert>arr2[i]){
index = i;
break; //得到插入数据大于数组中的某个元素后就不在往后比较了,结束循环
}
}
//(4)从插入位置开始的元素以及之后的元素都要往后移动一位
//(注意:从最后一个元素开始移动)
for(int i =arr2.length-1;i>index;i--){
arr2[i]=arr2[i-1];
}
//(5)将获取的插入元素存储到插入位置
arr2[index]=insert;
//遍历输出,看一下结果
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]+" ");
}
}
}
冒泡排序
思路:
两两相邻的数据进行比较,小的靠前大的靠后,经过多轮比较之后,实现升序排序
public class Demo04 {
public static void main(String[] args) {
int[] nums = {16,25,9,20,23};
System.out.println("排序前的数组:");
for (int i : nums) {
System.out.print(i+" ");
}
System.out.println();
//使用双重for循环实现冒泡排序
//外层循环控制轮数
for(int i =0;i<nums.length-1;i++){
//内层for循环控制每一轮的比较次数
for(int j =0;j<nums.length-1-i;j++){
//比较
if(nums[j]>nums[j+1]){//满足条件,元素交换位置
int temp = nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
System.out.println("排序后的数组:");
for (int i : nums) {
System.out.print(i+" ");
}
}
}