హాయ్! ఈ రోజు పాఠం మిగిలిన వాటి నుండి కొద్దిగా భిన్నంగా ఉంటుంది. ఇది జావాకు పరోక్షంగా మాత్రమే సంబంధించినది కాబట్టి ఇది భిన్నంగా ఉంటుంది. ప్రతి ప్రోగ్రామర్కు ఈ అంశం చాలా ముఖ్యమైనదని పేర్కొంది. మేము అల్గారిథమ్ల గురించి మాట్లాడబోతున్నాము . అల్గోరిథం అంటే ఏమిటి? సరళంగా చెప్పాలంటే, ఇది ఆశించిన ఫలితాన్ని సాధించడానికి పూర్తి చేయవలసిన కొన్ని చర్యల క్రమం . మేము రోజువారీ జీవితంలో తరచుగా అల్గారిథమ్లను ఉపయోగిస్తాము. ఉదాహరణకు, ప్రతి ఉదయం మీకు ఒక నిర్దిష్ట పని ఉంటుంది: పాఠశాలకు లేదా పనికి వెళ్లండి మరియు అదే సమయంలో:
- దుస్తులు ధరించారు
- శుభ్రంగా
- ఫెడ్
- అలారం గడియారాన్ని ఉపయోగించి మేల్కొలపండి.
- స్నానం చేసి మీరే కడగాలి.
- అల్పాహారం మరియు కొంచెం కాఫీ లేదా టీ చేయండి.
- తినండి.
- మీరు ముందు రోజు సాయంత్రం మీ బట్టలు ఇస్త్రీ చేయకపోతే, వాటిని ఇస్త్రీ చేయండి.
- వస్త్ర దారణ.
- ఇల్లు వదలి వెళ్ళండి.
- వెబ్స్టర్స్ థర్డ్ న్యూ ఇంటర్నేషనల్ డిక్షనరీ యొక్క 1961 ఎడిషన్ను కొనుగోలు చేయండి లేదా డౌన్లోడ్ చేయండి.
- ఈ నిఘంటువులో మా జాబితా నుండి ప్రతి పేరును కనుగొనండి.
- ఒక కాగితంపై, పేరు ఉన్న నిఘంటువు పేజీని వ్రాయండి.
- పేర్లను క్రమబద్ధీకరించడానికి కాగితపు ముక్కలను ఉపయోగించండి.
for
మీరు ఈ పనిని నిర్వహించే సాధారణ లూప్ను వ్రాస్తారు
int[] numbers = new int[100];
// ...fill the array with numbers
for (int i: numbers) {
System.out.println(i);
}
ఈ అల్గోరిథం యొక్క సంక్లిష్టత ఏమిటి? లీనియర్, అనగా O(n). ప్రోగ్రామ్ తప్పనిసరిగా నిర్వహించాల్సిన చర్యల సంఖ్య దానికి ఎన్ని సంఖ్యలు పంపబడిందనే దానిపై ఆధారపడి ఉంటుంది. శ్రేణిలో 100 సంఖ్యలు ఉంటే, 100 చర్యలు ఉంటాయి (స్క్రీన్పై స్ట్రింగ్లను ప్రదర్శించడానికి స్టేట్మెంట్లు). శ్రేణిలో 10,000 సంఖ్యలు ఉంటే, 10,000 చర్యలు తప్పనిసరిగా చేయాలి. మన అల్గారిథమ్ను ఏ విధంగానైనా మెరుగుపరచవచ్చా? లేదు. ఏది ఏమైనప్పటికీ, కన్సోల్లో స్ట్రింగ్లను ప్రదర్శించడానికి మేము శ్రేణి ద్వారా N పాస్లను చేయాలి మరియు N స్టేట్మెంట్లను అమలు చేయాలి. మరొక ఉదాహరణను పరిగణించండి.
public static void main(String[] args) {
LinkedList<Integer> numbers = new LinkedList<>();
numbers.add(0, 20202);
numbers.add(0, 123);
numbers.add(0, 8283);
}
LinkedList
మేము అనేక సంఖ్యలను చొప్పించే ఖాళీని కలిగి ఉన్నాము . LinkedList
మా ఉదాహరణలో ఒకే సంఖ్యను ఇన్సర్ట్ చేసే అల్గారిథమిక్ సంక్లిష్టతను మరియు జాబితాలోని మూలకాల సంఖ్యపై అది ఎలా ఆధారపడి ఉంటుందో మనం విశ్లేషించాలి . సమాధానం O(1), అనగా స్థిరమైన సంక్లిష్టత . ఎందుకు? మేము జాబితా ప్రారంభంలో ప్రతి సంఖ్యను చొప్పించామని గమనించండి. LinkedList
అదనంగా, మీరు సంఖ్యను a లోకి చొప్పించినప్పుడు , మూలకాలు ఎక్కడికీ కదలవని మీరు గుర్తుచేసుకుంటారు . లింక్లు (లేదా సూచనలు) అప్డేట్ చేయబడ్డాయి (లింక్డ్లిస్ట్ ఎలా పనిచేస్తుందో మీరు మర్చిపోయినట్లయితే, మా పాత పాఠాల్లో ఒకదానిని చూడండి ). మన జాబితాలో మొదటి సంఖ్య x
, మరియు మేము జాబితా ముందు భాగంలో y సంఖ్యను చొప్పించినట్లయితే, మనం చేయాల్సిందల్లా:
x.previous = y;
y.previous = null;
y.next = x;
మేము లింక్లను అప్డేట్ చేసినప్పుడు, ఒకటి లేదా ఒక బిలియన్లో ఇప్పటికే ఎన్ని నంబర్లు ఉన్నాయో మేము పట్టించుకోముLinkedList
. అల్గోరిథం యొక్క సంక్లిష్టత స్థిరంగా ఉంటుంది, అనగా O(1).
GO TO FULL VERSION