13-二维数组和排序
- 二维数组: 数组里面存放的数组,二维数组里面存放的是另一个数组的引用
1. 静态赋值
int[][] array = {{11,22,33},{44,55,66},{77,8}};
2. 动态赋值
数组的数据类型[][] 二维数组名 = new 数组的数据类型[数组的引用长度][数组元素长度];
public class ArrayDemo01 {
public static void main(String[] args) {
int [] array = new int [2]; //一维数组
int[][] arrayA = new int [2][3];
System.out.println(array);
System.out.println(arrpu'bay[0]);
System.out.println(arrayA);
System.out.println(arrayA[0]);
int[] arr = {11,22};
arrayA[1] = arr;
System.out.println(arr);
System.out.println(arrayA);
}
}
- 数组的遍历
public class ArrayDemo2 {
public static void main(String[] args){
int[][] array = {{11,22,33},{44,55,66},{77,8}};
//
for(int i=0;i<array.length;i++){ //一维数组
for(int j=0;j<array[i].length;j++){ //二维数组
System.out.print(array[i][j]);
}
System.out.println();
}
//foreach遍历数组
for(int[] i:array){
for(int j:i){
System.out.print(j+"\t");
}
System.out.println();
}
}
}
-
插入算法:
主要用于一个数组中,需要将新输入的数按照大小顺序插入到数组中
import java.util.Arrays;
import java.util.Scanner;
/**
* 插入算法:
*
* @author Administrator
*
*/
public class ArrayDemo01 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//[1]两个数组
int [] oldArray = {12,23,34,45,56};
int [] newArray = new int [oldArray.length+1]; //新数组比原数组多1
//[2]循环赋值
for(int i = 0;i<oldArray.length;i++){
newArray[i]=oldArray[i];
}
System.out.println(Arrays.toString(newArray)); //toString :遍历数组
//[3]循环比较
int number =input.nextInt(); //要插入的数据
int index =0; //记录要插入的下边(默认下标为最大下标)
//开始比较
for(int i =0;i<newArray.length;i++){
if(newArray[i]>number){
index=i;
break;
}
}
//[4]找到位置,移动其他的数据位置
for(int i = newArray.length-1;i>index;i--){
newArray[i]= newArray[i-1];
}
//[5]插入数据
newArray[index] = number;
System.out.println(Arrays.toString(newArray));
}
}
- 冒泡排序
import java.util.Arrays;
/**
* 冒泡排序:
* n个数字来排队
* 两两相比小靠前
* 外层循环N-1
* 内层循环n-1-i
*
* @author Administrator
*
*/
public class ArrayDemo02 {
public static void main(String[] args) {
int [] arry = {12,34,66,23,1};
System.out.println(Arrays.toString(arry));
//排序
for(int i = 0;i<arry.length-1;i++){ //外层循环 n-1
for(int j = 0;j<arry.length-1-i;j++){ //内层循环 n-1-i
if(arry[j]>arry[j+1]){
//交换
int temp = arry[j];
arry[j] = arry[j+1];
arry[j+1]=temp;
}
}
}
System.out.println("排序后:\n"+Arrays.toString(arry));
}
}
- 选择排序
import java.util.Arrays;
/***
* 选择排序:
*
* @author Administrator
*
*/
public class ArrayDemo03 {
public static void main(String[] args) {
//创建数组
int [] arr = {44,22,11,33};
//排序
for(int i = 0;i<arr.length-1;i++){ //轮
for(int j = i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
//交换
int temp = arr[i];
arr[i] = arr[j];
arr[j]=temp;
}
}
}
System.out.println("排序\n"+Arrays.toString(arr));
}
}