सबसे लंबे समय तक बढ़ते क्रम के लिए जावा प्रोग्राम निम्नलिखित है -
उदाहरण
public class Demo{ static int incre_subseq(int my_arr[], int arr_len){ int seq_arr[] = new int[arr_len]; int i, j, max = 0; for (i = 0; i < arr_len; i++) seq_arr[i] = 1; for (i = 1; i < arr_len; i++) for (j = 0; j < i; j++) if (my_arr[i] > my_arr[j] && seq_arr[i] < seq_arr[j] + 1) seq_arr[i] = seq_arr[j] + 1; for (i = 0; i < arr_len; i++) if (max < seq_arr[i]) max = seq_arr[i]; return max; } public static void main(String args[]){ int my_arr[] = { 10, 22, 9, 33, 21, 50, 41, 60 }; int arr_len = my_arr.length; System.out.println("The length of the longest increasing subsequence is " + incre_subseq(my_arr, arr_len)); } }
आउटपुट
The length of the longest increasing subsequence is 5है
डेमो नामक एक वर्ग में 'incre_subseq' नामक एक स्थिर फ़ंक्शन होता है जो सरणी और सरणी की लंबाई को पैरामीटर के रूप में लेता है। इस फ़ंक्शन के अंदर, एक नई सरणी बनाई जाती है जो खाली होती है। एक 'अधिकतम' चर को मान 0 दिया जाता है। एक 'फॉर' लूप सरणी की लंबाई पर पुनरावृत्त होता है और प्रत्येक तत्व को 1 में प्रारंभ किया जाता है।
फिर, 'फॉर' लूप को पुनरावृत्त किया जाता है, और एक और 'फॉर' लूप शुरू किया जाता है जो जांचता है कि सरणी में पहला तत्व दूसरे तत्व के बराबर है और यदि सरणी (seq_arr, जिसमें सभी 1s प्रारंभ किए गए थे) में पहले तत्व से कम है दूसरा तत्व + 1. seq_arr में अधिकतम तत्व पाए जाते हैं और वापस आ जाते हैं। यह गतिशील प्रोग्रामिंग तकनीक है जिसमें एक मान की गणना की जाती है और एक सरणी में संग्रहीत किया जाता है, इसे बार-बार गणना करने की आवश्यकता को हटाकर पुनरावृत्ति के रूप में। जब भी पहले से गणना किए गए तत्व की आवश्यकता होती है, तो इसे सरणी से प्राप्त किया जाता है।