中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Java中定義數組

發布時間:2021-01-15 14:55:54 來源:億速云 閱讀:115 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關怎么在Java中定義數組,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

數組排序

在很多的面試題上都會出現數組排序的操作形式。但是這個時候你千萬別寫上:java.util.Arrays.sort(數組)。而這種排序都是以升序為主。

基礎的排序操作:

范例: 冒泡排序

public class ArrayDemo {
	public static void main(String args[]) {
		int data[] = new int[] {9, 3, 1, 5, 4, 2, 7, 8, 6, 0};
		sort(data);
		printArray(data);
	}

	public static void sort(int arr[]) { //實現數組排序
		for(int x = 0; x < arr.length - 1; x++) {
			for(int y = 0; y < arr.length - x - 1; y++) {
				if(arr[y] > arr[y+1]) {
					int temp = arr[y];
					arr[y] = arr[y+1];
					arr[y+1] = temp;
				}
			}
		}
	}
	//定義一個專門進行數組輸出的方法
	public static void printArray(int temp[]) {
		for (int i = 0; i < temp.length; i++) {
			System.out.print(temp[i] + "、");
		}
		System.out.println();
	}
}

數組轉置

所謂的轉置最簡單的理解就是首尾交換。而如果要想實現這樣的交換有兩種實現思路。

思路一:開辟一個新的等長的數組,而后將原始數組倒序保存進去;

public class ArrayDemo {
	public static void main(String args[]) {
		int data[] = new int[] {9, 3, 1, 5, 4, 2, 7, 8, 6, 0};
		data = reverse(data); //反轉
		printArray(data);
	}
	public static int [] reverse(int arr[]) { 
		int temp[] = new int[arr.length];
		int foot = 0;
		for(int x = arr.length - 1; x >= 0; x--) {
			temp[foot++] = arr[x];
		}
		return temp;
	}
	//定義一個專門進行數組輸出的方法
	public static void printArray(int temp[]) {
		for (int i = 0; i < temp.length; i++) {
			System.out.print(temp[i] + "、");
		}
		System.out.println();
	}
}

使用此類模式實現的最大問題在于開辟了兩塊相同的堆內存空間,所以造成空間浪費。

思路二:在一個數組上完成轉換

public class ArrayDemo {
	public static void main(String args[]) {
		int data[] = new int[] {9, 3, 1, 5, 4, 2, 7, 8, 6, 0};
		reverse(data); //反轉
		printArray(data);
	}

	public static void reverse(int arr[]) {
		int center = arr.length / 2; //轉換次數
		int head = 0; //頭部開始索引
		int tail = arr.length - 1; //尾部開始索引
		for(int x = 0; x < center; x++) {
			int temp = arr[head];
			arr[head] = arr[tail];
			arr[tail] = temp;
			head++;
			tail--;
		}
	}
	//定義一個專門進行數組輸出的方法
	public static void printArray(int temp[]) {
		for (int i = 0; i < temp.length; i++) {
			System.out.print(temp[i] + "、");
		}
		System.out.println();
	}
}

這種轉換只需要根據數組長度 ÷ 2即可。

如果要進行二維數組的原地轉置,那么肯定有一個前提:行列要相等。

范例: 保證中間軸不變(x = y)

public class ArrayDemo {
	public static void main(String args[]) {
		int data[][] = new int[][] {{1, 2, 3}, {4, 5, 6},{7, 8, 9}};
		reverse(data); //反轉
		printArray(data);
	}

	public static void reverse(int arr[][]) {
		for(int x = 0; x < arr.length; x++) {
			for(int y = x; y < arr[x].length; y++) {
				if(x != y) {
					int temp = arr[x][y];
					arr[x][y] = arr[y][x];
					arr[y][x] = temp;
				}
			}
		}
	}
	//定義一個專門進行數組輸出的方法
	public static void printArray(int temp[][]) {
		for (int i = 0; i < temp.length; i++) {
			for(int j = 0; j < temp[i].length; j++) {
				System.out.print(temp[i][j] + "、");
			}
			System.out.println();
		}
		System.out.println();
	}
}

二分查找法

如果現在要求在一個指定的數組之中查詢一個數據的位置,那么現在可能想到的最簡化的實現,整體數組遍歷。

范例: 順序查找

public class ArrayDemo {
	public static void main(String args[]) {
		int data[] = new int[] {1, 2, 3, 4, 5, 6, 7, 8};
		int search = 7;
		System.out.println(index(data, search));
	}
	public static int index(int arr[], int key) {
		for(int x = 0; x < arr.length; x++) {
			if(arr[x] == key)
				return x;
		}
		return -1;
	}
}

這個的時間復雜度是n,也就是說所有的數組中的數據都需要進行一次遍歷,這樣才能確認所需要查找的數據是否存在,那么現在如果想進行更快速地查找,最好的做法是進行二分查找(折半查找)。

范例: 實現二分查找(采用遞歸)

public class ArrayDemo {
	public static void main(String args[]) {
		int data[] = new int[] {1, 2, 3, 4, 5, 6, 7, 8};
		int search = 7;
		System.out.println(index(data, search));
	}
	public static int binarySearch(int arr[], int from, int to, int key) {
		if(from < to) {
			int mid = from / 2 + to / 2; //確定中間點
			if(arr[mid] = key) { //數據找到了
				return mid; // 取得當前索引
			}else if(key < arr[mid]) {
				return binarySearch(arr, from, mid - 1; key);
			}
			else(key > arr[mid]){
				return binarySearch(arr, mid + 1, to, key);
			}
		}
		return -1;
	}
}

但是這些都是屬于數據結構課程的范圍,是邏輯思維訓練。

對象數組(核心)

在之前所定義的數組都屬于基本數據類型數組,那么對象也可以將其定義為數組,這樣的操作形式稱為對象數組。對象數組往往是以引用數據類型為主的定義,例如:類、接口,而且對象數組也分為兩種定義格式。

  • 對象數組動態初始化:類名稱 對象數組名稱[] = new 類名稱[長度];

  • 對象數組靜態初始化:類名稱 對象數組名稱[] = new 類名稱[]{實例化對象,…};

范例: 對象數組的動態初始化

class Person {
	private String name;
	private int age;

	public Person(String n, int a) {
		name = n;
		age = a;
	}
	public String getInfo() {
		return "姓名:" + name + ",年齡:" + age;
	}
}
public class ArrayDemo {
	// 動態初始化之后對象數組中的每一個元素都是其對象數據類型的默認值
	public static void main(String args[]) {
		Person per[] = new Person[3]; //動態初始化
		per[0] = new Person("張三", 1);
		per[1] = new Person("王五", 2);
		per[2] = new Person("李四", 4);
		for(int x = 0; x < per.length; x++) {
			System.out.println(per[x].getInfo());
		}
	}
}

范例: 靜態初始化

class Person {
	private String name;
	private int age;

	public Person(String n, int a) {
		name = n;
		age = a;
	}
	public String getInfo() {
		return "姓名:" + name + ",年齡:" + age;
	}
}
public class ArrayDemo {
	// 動態初始化之后對象數組中的每一個元素都是其對象數據類型的默認值
	public static void main(String args[]) {
		Person per[] = new Person[] {
		new Person("張三", 1), 
		new Person("王五", 2),
		new Person("李四", 4)
		}; //動態初始化
		for(int x = 0; x < per.length; x++) {
			System.out.println(per[x].getInfo());
		}
	}
}

每一個對象可以保存更多的的屬性,所以對象數組保存的內容要比基本數據類型更多。那么應用的也就更多。所有的開發必定都存在有對象數組的概念。

上述就是小編為大家分享的怎么在Java中定義數組了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

繁峙县| 江北区| 龙州县| 徐水县| 宝丰县| 哈巴河县| 房山区| 隆德县| 湘潭市| 宜黄县| 静乐县| 安陆市| 通州区| 通榆县| 英超| 蒙阴县| 年辖:市辖区| 仙游县| 临潭县| 响水县| 永修县| 渝中区| 越西县| 华宁县| 开平市| 河南省| 琼海市| 霍山县| 朝阳县| 涞源县| 新源县| 澄迈县| 栾川县| 论坛| 武定县| 青海省| 平邑县| 宁安市| 库伦旗| 安顺市| 瓦房店市|