在Java中查詢給定陣列的所有子陣列
一個陣列是一種線性資料結構,其中元素儲存在連續的記憶體位置。
根據問題陳述,我們必須找到給定陣列的所有子陣列。子陣列是陣列的一部分或一段。當我們談論陣列的所有子陣列時,我們指的是可以使用陣列的所有元素進行組合的總數,而無需重複。
讓我們探索本文,瞭解如何使用Java程式語言來完成此操作。
為您展示一些例項
例項 1
假設我們有以下陣列
[10, 2, 3, -5, 99, 12, 0, -1]
此陣列的子陣列將是
10 10 2 10 2 3 10 2 3 -5 10 2 3 -5 99 10 2 3 -5 99 12 10 2 3 -5 99 12 0 10 2 3 -5 99 12 0 -1 2 2 3 2 3 -5 2 3 -5 99 2 3 -5 99 12 2 3 -5 99 12 0 2 3 -5 99 12 0 -1 3 3 -5 3 -5 99 3 -5 99 12 3 -5 99 12 0 3 -5 99 12 0 -1 -5 -5 99 -5 99 12 -5 99 12 0 -5 99 12 0 -1 99 99 12 99 12 0 99 12 0 -1 12 12 0 12 0 -1 0 0 -1 -1
例項 2
假設我們有以下陣列
[55,10,29,74]
此陣列的子陣列將是
55 55 10 55 10 29 55 10 29 74 10 10 29 10 29 74 29 29 74 74
演算法
演算法 1
步驟 1 - 儲存陣列後,執行一個從 0 到 n 的 for 迴圈。這將標記我們主陣列的起始點。
步驟 2 - 執行另一個 for 迴圈,該迴圈從第一個迭代器執行到主陣列的結束點。
步驟 3 - 現在執行另一個迴圈,遍歷這兩個迭代器之間的元素。
步驟 4 - 按順序列印元素。
演算法 2
步驟 1 - 儲存陣列後,檢查我們是否已到達末尾,然後退出函式。
步驟 2 - 如果起始索引大於結束索引,則從 0 到 end+1 自行呼叫函式。
步驟 3 - 否則,在 for 迴圈內列印索引之間的陣列元素,然後從 start+1 到 end 再次呼叫函式。
步驟 4 - 退出。
語法
要獲取陣列的長度(該陣列中的元素數量),陣列有一個內建屬性,即length
下面指的是它的語法:
array.length
其中,“array”指的是陣列引用。
您可以使用 Arrays.sort() 方法將陣列按升序排序。
Arrays.sort(array_name);
多種方法
我們以不同的方法提供瞭解決方案。
使用 for 迴圈
使用遞迴
讓我們一一檢視程式及其輸出。
方法 1:使用 for 迴圈
在這種方法中,我們將使用三個 for 迴圈來查詢陣列的子陣列。第一個迴圈標記開始,第二個迴圈標記子陣列的結束,而第三個迴圈列印子陣列。
示例
import java.io.*;
public class Main {
public static void main(String[] args) {
// The array elements
int arr[] = { 10, 2, 3, 99, 12, 0 };
System.out.println("The subarrays are-");
// For loop for start index
for (int i = 0; i < arr.length; i++)
// For loop for end index
for (int j = i; j < arr.length; j++) {
// For loop to print subarray elements
for (int k = i; k <=j; k++)
System.out.print(arr[k] + " ");
System.out.println("");
}
}
}
輸出
The subarrays are- 10 10 2 10 2 3 10 2 3 99 10 2 3 99 12 10 2 3 99 12 0 2 2 3 2 3 99 2 3 99 12 2 3 99 12 0 3 3 99 3 99 12 3 99 12 0 99 99 12 99 12 0 12 12 0 0
方法 2:使用遞迴
在這種方法中,我們使用遞迴查詢所有子陣列。
示例
import java.io.*;
public class Main {
//main method
public static void main(String[] args) {
// The array elements
int arr[] = { 10, 2, 3};
System.out.println("The subarrays are-");
// Calling the recursive function
printSubArrays(arr, 0, 0);
}
// Recursive FUnction to Find all the subarrays
static void printSubArrays(int[] arr, int head, int tail) {
// Exits the function if we have reached the end
if (tail == arr.length)
return;
// Increases the first index and calls itself
else if (head > tail)
printSubArrays(arr, 0, tail + 1);
// Print the subarray and then increases the first element index
else {
for (int i = head; i < tail; i++)
System.out.print(arr[i] + " ");
System.out.println(arr[tail]);
printSubArrays(arr, head + 1, tail);
}
return;
}
}
輸出
The subarrays are- 10 10 2 2 10 2 3 2 3 3
在本文中,我們探討了如何使用 Java 程式語言查詢給定陣列的所有子陣列。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP