遞歸頭:什么時候不調用自身。如果沒有頭,將陷入死循環。
遞歸尾:什么時候需要調用自身方法
package com.method;
public class Domn06 {
//階乘 2!
public static void main(String[] args) {
System.out.println(f(10));
}
//遞歸 2!=2*f(1) 類似於函數
public static int f(int n){
if (n==1){
return 1;
}else {
return n*f(n-1);
}
}
}
數組的四個基本特點
-
其長度是確定的,數組一旦被創造,它的大小就是固定的
-
其元素必須是相同類型,不允許出現混合類型
-
數組中的元素可以是任何數據類型,包括基本類型和引用類型
-
數組變量屬於引用變量,數組也可以看成是對象,數組中的每個元素相當於該對象的成員變量。數組本身就是對象,java中對象是在堆中的,一次數組無論保存原始類型還是其他對象類型
數組的邊界
-
下標的合法區間【0,length-1】
小結:
-
-
數組長度是確定的,不可變得
冒泡排序
package com.array;
import java.util.Arrays;
public class ArrayDomn07 {
public static void main(String[] args) {
int[] a={1,5,64,65,464,6464,6464,6464,6464};
int[] sort=sort(a);
System.out.println(Arrays.toString(sort));
}
//冒泡排序
//1.比較數組中,兩個相鄰的元素,如果第一個數比第二個大,我們就交換他們的位置
//2.每一次比較,都會產生出一個最大,或者最小的數字
//3.下一輪則可以少一次排序
//4.一次循環,知道結束
public static int[] sort(int[] array) {
int temp=0;//臨時變量
boolean flag=false;//通過flag標識位減少沒有意義的比較
//外層循環,比較判斷兩個數,如果第一個數比第二個數大,則交換位置
for (int i = 0; i <array.length ; i++) {
//內層循環,比
for (int j = 0; j <array.length-1-i ; j++) {
if (array[j+1]<array[j]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
flag=true;
}
}
if (flag==false){
break;
}
}
return array;
}
}
稀疏數組
package com.array;
public class ArrayDomn08 {
public static void main(String[] args) {
int[][] array1=new int[11][11];
array1[1][2]=1;
array1[2][3]=1;
System.out.println("輸出原始數組");
for (int[] ints : array1){
for (int anInt : ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
int sum=0;
for (int i = 0; i <11 ; i++) {
for (int j = 0; j <11 ; j++) {
if (array1[i][j]!=0){
sum++;
}
}
}
System.out.println("有效值的個數: "+sum);
//
int[][] array2=new int[sum+1][3];
array2[0][0] =11;
array2[0][1] =11;
array2[0][2] =sum;
int count=0;
for (int i = 0; i <array1.length ; i++) {
for (int j = 0; j <array1[i].length ; j++) {
if (array1[i][j]!=0){
count++;
array2[count][0]=i;
array2[count][1]=j;
array2[count][2]=array1[i][j];
}
}
}
System.out.println("稀疏數組");
for (int i = 0; i <array2.length ; i++) {
System.out.println(array2[i][0]+"\t"
+array2[i][1]+"\t"
+array2[i][2]+"\t");
}
System.out.println("=======================");
System.out.println("還原");
int[][] array3= new int[array2[0][0]][array2[0][1]];
for (int i = 1; i <array2.length ; i++) {
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
System.out.println("輸出還原數組");
for (int[] ints : array3){
for (int anInt : ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}