Java में कोड ऑप्टिमाइज़ करना
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
वर्स्ट-केस समझाने की गणितीय नोटेशन.
कुछ सामान्य कॉम्प्लेक्सिटी क्लासेज:
O(1): कॉन्स्टेंट टाइम - साइज-इंडिपेंडेंटO(1) ऑपरेशन का एक उदाहरण ArrayList का get() हैStrings रखने वाले ArrayList का आंतरिक (सरल) इम्प्लीमेंटेशन:
public class ArrayList {}
private String[] data; // Internal array
private int size;
// Get operation - direct array access
public String get(int index) {
return data[index]; // O(1)
}
}
वर्स्ट-केस समझाने की गणितीय नोटेशन
कुछ सामान्य कॉम्प्लेक्सिटी क्लासेज:
O(1): कॉन्स्टेंट टाइम - साइज-इंडिपेंडेंटO(n): लीनियर टाइम - इनपुट के साथ बढ़ता हैArrayList के contains() के लिएpublic boolean contains(Object o) {
return indexOf(o) >= 0;
}
public int indexOf(Object o) {
// Linear search through array
for (int i = 0; i < size; i++) {
if (o.equals(elementData[i])) {
return i;
}
}
return -1; // Not found
}
वर्स्ट-केस समझाने की गणितीय नोटेशन
कुछ सामान्य कॉम्प्लेक्सिटी क्लासेज:
O(1): कॉन्स्टेंट टाइम - साइज-इंडिपेंडेंटO(n): लीनियर टाइम - इनपुट के साथ बढ़ता हैO(n²): क्वाड्रेटिक टाइम - इनपुट के साथ वर्गानुपाती बढ़ता है// ऐसी संख्या-जोड़ी ढूँढना जिनका योग target के बराबर हो
// Time complexity: O(n²)
public int[] findPairWithSum(ArrayList<Integer> numbers, int targetSum) {
for (int i = 0; i < numbers.size(); i++) {
for (int j = i + 1; j < numbers.size(); j++) {
if (numbers.get(i) + numbers.get(j) == targetSum) {
console.log("Found them!")
}
}
}
}
इनपुट साइज का असर:
O(1): 1,000 -> 1,000,000 आइटम = समय समान!O(n): 1,000 -> 1,000,000 आइटम = 1,000× धीमाO(n²): 1,000 -> 1,000,000 आइटम = 1,000,000× धीमा
Java में कोड ऑप्टिमाइज़ करना