సాఫ్ట్వేర్ అభివృద్ధిలో నేను చాలా ముఖ్యమైన అంశాన్ని ఎంచుకోవలసి వస్తే, అది డేటా నిర్మాణాలు మరియు అల్గోరిథంలు. ప్రతి కంప్యూటర్ ప్రోగ్రామర్కు అందుబాటులో ఉన్న ప్రాథమిక సాధనంగా మీరు దీన్ని అనుకోవచ్చు. ప్రోగ్రామింగ్ చేస్తున్నప్పుడు, మేము ఉపయోగిస్తాము డేటా నిర్మాణాలు డేటాను నిల్వ చేయడానికి మరియు నిర్వహించడానికి మరియు అల్గోరిథంలు ఆ నిర్మాణాలలో డేటాను మార్చటానికి. ఈ వ్యాసంలో అన్ని సాధారణ డేటా నిర్మాణాలు మరియు అల్గోరిథంల యొక్క వివరణాత్మక సమీక్ష ఉంది పాఠకులను బాగా అమర్చడానికి అనుమతించడం.
ఈ వ్యాసంలో చర్చించిన విషయాలు క్రింద ఇవ్వబడ్డాయి:
జావాలో డేటా స్ట్రక్చర్స్
డేటా స్ట్రక్చర్ అనేది కంప్యూటర్లో డేటాను నిల్వ చేయడానికి మరియు నిర్వహించడానికి ఒక మార్గం, తద్వారా దీనిని సమర్థవంతంగా ఉపయోగించుకోవచ్చు. ఇది పెద్ద మొత్తంలో డేటాను సమర్థవంతంగా నిర్వహించడానికి ఒక మార్గాన్ని అందిస్తుంది. సమర్థవంతమైన అల్గోరిథంల రూపకల్పనలో సమర్థవంతమైన డేటా నిర్మాణాలు కీలకం.
లోఈ ‘జావాలోని డేటా స్ట్రక్చర్స్ అండ్ అల్గోరిథమ్స్’ కథనం, మేము ప్రాథమిక డేటా నిర్మాణాలను కవర్ చేయబోతున్నాం:
- క్రమానుగత డేటా నిర్మాణాలు
వాటిలో ప్రతిదాన్ని చూద్దాం.
జావాలో లీనియర్ డేటా స్ట్రక్చర్స్
లో లీనియర్ డేటా నిర్మాణాలు దీని మూలకాలు క్రమానుగతంగా ఉంటాయి మరియు ఒక విధంగా క్రమం చేయబడతాయి: ఒకటి మాత్రమే ఉంది మొదటి మూలకం మరియు ఒకే ఒక్కటి ఉంది తదుపరి మూలకం , ఒకటి మాత్రమే ఉంది చివరి మూలకం మరియు ఒకే ఒక్కటి ఉంది మునుపటి మూలకం , అన్ని ఇతర అంశాలు a కలిగి ఉంటాయి తరువాత మరియు ఒక మునుపటి మూలకం.
శ్రేణులు
ఒక అమరిక ఒక సరళ డేటా నిర్మాణంసూచిక ద్వారా ప్రాప్యత చేయబడిన సారూప్య మూలకాల సమూహాన్ని సూచిస్తుంది. డేటాను నిల్వ చేయడానికి ముందు శ్రేణి యొక్క పరిమాణం అందించాలి. శ్రేణి యొక్క లక్షణాలు క్రింద ఇవ్వబడ్డాయి:
- శ్రేణిలోని ప్రతి మూలకం ఒకే డేటా రకానికి చెందినది మరియు ఒకే పరిమాణాన్ని కలిగి ఉంటుంది
- శ్రేణి యొక్క మూలకాలు అతి చిన్న మెమరీ స్థానంతో ప్రారంభమవుతాయి
- శ్రేణి యొక్క మూలకాలను యాదృచ్ఛికంగా యాక్సెస్ చేయవచ్చు
- శ్రేణి డేటా నిర్మాణం పూర్తిగా డైనమిక్ కాదు
ఉదాహరణకి , ఆ ఆట కోసం మొదటి పది స్కోర్లను ట్రాక్ చేయడానికి మేము వీడియో గేమ్ను కోరుకుంటున్నాము. పది వేర్వేరు వాడటం కంటే వేరియబుల్స్ ఈ పని కోసం, మేము మొత్తం సమూహానికి ఒకే పేరును ఉపయోగించవచ్చు మరియు ఆ సమూహంలోని అధిక స్కోర్లను సూచించడానికి సూచిక సంఖ్యలను ఉపయోగించవచ్చు.
లింక్డ్ జాబితా
TO బహుళ నోడ్ల సేకరణతో సరళ డేటా నిర్మాణం, ఇక్కడ ఇach మూలకం దాని స్వంత డేటాను మరియు తదుపరి మూలకం యొక్క స్థానానికి పాయింటర్ను నిల్వ చేస్తుంది. లింక్ చేయబడిన జాబితాలోని చివరి లింక్ శూన్యంగా సూచిస్తుంది, ఇది గొలుసు ముగింపును సూచిస్తుంది. లింక్ చేయబడిన జాబితాలోని మూలకాన్ని a అంటారు నోడ్ . మొదటి నోడ్ను అంటారు తల .చివరి నోడ్ అంటారుది తోక .
లింక్డ్ జాబితా రకాలు
సింగ్లీ లింక్డ్ లిస్ట్ (యూని-డైరెక్షనల్)
రిఫరెన్స్ ద్వారా కాల్ చేయండి c ++ ఉదాహరణ
డబుల్ లింక్డ్ లిస్ట్ (ద్వి-దిశాత్మక)
వృత్తాకార లింక్డ్ జాబితా
ఇక్కడ ఒక సాధారణ ఉదాహరణ: పేపర్క్లిప్ల గొలుసు వంటి అనుసంధాన జాబితాను g హించుకోండి. మీరు ఎగువ లేదా దిగువకు మరొక పేపర్క్లిప్ను సులభంగా జోడించవచ్చు. మధ్యలో ఒకదాన్ని చొప్పించడం కూడా త్వరగా. మీరు చేయాల్సిందల్లా మధ్యలో గొలుసును డిస్కనెక్ట్ చేయడం, కొత్త పేపర్క్లిప్ను జోడించి, మిగిలిన సగం తిరిగి కనెక్ట్ చేయడం. లింక్ చేయబడిన జాబితా సమానంగా ఉంటుంది.
స్టాక్స్
స్టాక్, ఒక నైరూప్య డేటా నిర్మాణం, యొక్క సేకరణ వస్తువులు అవి చొప్పించబడి తొలగించబడతాయి లాస్ట్-ఇన్-ఫస్ట్-అవుట్ (LIFO) సూత్రం. వస్తువులను ఏ సమయంలోనైనా స్టాక్లోకి చేర్చవచ్చు, అయితే ఇటీవల చొప్పించిన (అంటే “చివరి”) వస్తువు మాత్రమే ఎప్పుడైనా తొలగించబడుతుంది.స్టాక్ యొక్క లక్షణాలు క్రింద ఇవ్వబడ్డాయి:
- ఇది ఆర్డర్డ్ జాబితాచొప్పించడం మరియు తొలగించడం అని పిలువబడే ఒక చివరలో మాత్రమే చేయవచ్చు టాప్
- దాని ఎగువ మూలకానికి పాయింటర్తో పునరావృత డేటా నిర్మాణం
- అనుసరిస్తుంది లాస్ట్-ఇన్-ఫస్ట్-అవుట్ (LIFO) సూత్రం
- రెండు అత్యంత ప్రాథమిక పద్ధతులకు మద్దతు ఇస్తుంది
- పుష్ (ఇ): స్టాక్ పైభాగానికి మూలకం ఇని చొప్పించండి
- పాప్ (): స్టాక్లోని పై మూలకాన్ని తీసివేసి తిరిగి ఇవ్వండి
ఒక పదాన్ని రివర్స్ చేసేటప్పుడు స్టాక్ యొక్క ప్రాక్టికల్ ఉదాహరణలు,యొక్క ఖచ్చితత్వాన్ని తనిఖీ చేయడానికి కుండలీకరణాలుక్రమం,బ్రౌజర్లలో తిరిగి కార్యాచరణను అమలు చేయడం మరియు మరెన్నో.
క్యూలు
మరొక రకమైన నైరూప్య డేటా నిర్మాణం. స్టాక్ వలె కాకుండా, క్యూ అనేది వస్తువుల సమాహారం ఫస్ట్-ఇన్-ఫస్ట్-అవుట్ (FIFO) సూత్రం. అంటే, ఏ సమయంలోనైనా మూలకాలను చేర్చవచ్చు, కాని క్యూలో ఎక్కువసేపు ఉన్న మూలకాన్ని మాత్రమే ఎప్పుడైనా తొలగించవచ్చు.క్యూ యొక్క లక్షణాలు క్రింద ఇవ్వబడ్డాయి:
- తరచుగా దీనిని సూచిస్తారు మొదట వచ్చినది మొదట వెల్తుంది జాబితా
- రెండు అత్యంత ప్రాథమిక పద్ధతులకు మద్దతు ఇస్తుంది
- enqueue (e): మూలకం e ను చొప్పించండి వెనుక క్యూ యొక్క
- dequeue (): నుండి మూలకాన్ని తీసివేసి తిరిగి ఇవ్వండి ముందు క్యూ యొక్క
క్యూలు ఉపయోగించబడతాయిరెండు ప్రక్రియల మధ్య డేటా యొక్క అసమకాలిక బదిలీ, CPU షెడ్యూలింగ్, డిస్క్ షెడ్యూలింగ్ మరియు బహుళ వినియోగదారుల మధ్య వనరులు పంచుకోబడిన మరియు మొదట వచ్చిన మొదటి సర్వర్ ప్రాతిపదికన సేవలు అందించే ఇతర పరిస్థితులు. ఈ ‘జావాలోని డేటా స్ట్రక్చర్స్ అండ్ అల్గారిథమ్స్’ కథనంలో, మనకు క్రమానుగత డేటా నిర్మాణాలు ఉన్నాయి.
జావాలో క్రమానుగత డేటా నిర్మాణాలు
బైనరీ చెట్టు
బైనరీ చెట్టు aక్రమానుగత చెట్టు డేటా నిర్మాణాలు ప్రతి నోడ్లో గరిష్టంగా ఇద్దరు పిల్లలు ఉన్నారు , వీటిని సూచిస్తారు ఎడమ బిడ్డ ఇంకా సరైన పిల్లవాడు . ప్రతి బైనరీ చెట్టు కింది నోడ్స్ సమూహాలను కలిగి ఉంటుంది:
- రూట్ నోడ్: ఇది అగ్రశ్రేణి నోడ్ మరియు తరచుగా ప్రధాన నోడ్ అని పిలుస్తారుఎందుకంటే అన్ని ఇతర నోడ్లను రూట్ నుండి చేరుకోవచ్చు
- ఎడమ ఉప-చెట్టు, ఇది బైనరీ చెట్టు కూడా
- కుడి ఉప-చెట్టు, ఇది బైనరీ చెట్టు కూడా
బైనరీ చెట్టు యొక్క లక్షణాలు క్రింద ఇవ్వబడ్డాయి:
- బైనరీ చెట్టును రెండు విధాలుగా ప్రయాణించవచ్చు:
- లోతు మొదటి ప్రయాణం : ఇన్-ఆర్డర్ (లెఫ్ట్-రూట్-రైట్), ప్రీఆర్డర్ (రూట్-లెఫ్ట్-రైట్) మరియు పోస్టార్డర్ (లెఫ్ట్-రైట్-రూట్)
- వెడల్పు మొదటి ట్రావెర్సల్ : స్థాయి ఆర్డర్ ట్రావెర్సల్
- చెట్ల ప్రయాణం యొక్క సమయం సంక్లిష్టత: O (n)
- ‘L’ = 2 స్థాయిలో ఉన్న నోడ్ల గరిష్ట సంఖ్యl-1.
బైనరీ చెట్ల అనువర్తనాలు:
- డేటా నిరంతరం ప్రవేశించే / వదిలివేసే అనేక శోధన అనువర్తనాల్లో ఉపయోగించబడుతుంది
- విజువల్ ఎఫెక్ట్స్ కోసం డిజిటల్ చిత్రాలను కంపోజ్ చేయడానికి వర్క్ఫ్లో
- రౌటర్-పట్టికలను నిల్వ చేయడానికి దాదాపు ప్రతి అధిక-బ్యాండ్విడ్త్ రౌటర్లో ఉపయోగించబడుతుంది
- వైర్లెస్ నెట్వర్కింగ్ మరియు మెమరీ కేటాయింపులో కూడా ఉపయోగిస్తారు
- కుదింపు అల్గోరిథంలలో మరియు మరెన్నో ఉపయోగించబడుతుంది
బైనరీ కుప్ప
బైనరీ హీప్ పూర్తిబైనరీ చెట్టు, ఇది కుప్ప ఆస్తికి సమాధానం ఇస్తుంది. సరళంగా చెప్పాలంటేకింది లక్షణాలతో బైనరీ చెట్టు యొక్క వైవిధ్యం:
- కుప్ప పూర్తి బైనరీ చెట్టు: ఒక చెట్టు దాని స్థాయిలు, లోతైనవి తప్ప, పూర్తి అయితే పూర్తి అని అంటారు. టిబైనరీ హీప్ యొక్క అతని ఆస్తి ఒక నిల్వ చేయడానికి అనుకూలంగా ఉంటుంది .
- కుప్ప ఆస్తిని అనుసరిస్తుంది: బైనరీ కుప్ప ఒకటి కనిష్ట-కుప్ప లేదా a మాక్స్-హీప్ .
- కనిష్ట బైనరీ కుప్ప: ఎఫ్లేదా కుప్పలోని ప్రతి నోడ్, నోడ్ యొక్క విలువ కంటే తక్కువ లేదా సమానం పిల్లల విలువలు
- మాక్స్ బైనరీ హీప్: ఎఫ్లేదా కుప్పలోని ప్రతి నోడ్, నోడ్ యొక్క విలువ కంటే ఎక్కువ లేదా సమానం పిల్లల విలువలు
బైనరీ కుప్ప యొక్క ప్రసిద్ధ అనువర్తనాలు ఉన్నాయిసమర్థవంతమైన ప్రాధాన్యత-క్యూలను అమలు చేయడం, శ్రేణిలో k చిన్న (లేదా అతిపెద్ద) అంశాలను సమర్థవంతంగా కనుగొనడం మరియు మరెన్నో.
హాష్ పట్టికలు
మీకు ఒక ఉందని g హించుకోండి వస్తువు మరియు శోధనను చాలా సులభం చేయడానికి మీరు దానికి ఒక కీని కేటాయించాలనుకుంటున్నారు. ఆ కీ / విలువ జతను నిల్వ చేయడానికి, మీరు డేటా నిర్మాణం వంటి సరళమైన శ్రేణిని ఉపయోగించవచ్చు, ఇక్కడ డేటా విలువలను నిల్వ చేయడానికి కీలు (పూర్ణాంకాలు) నేరుగా సూచికగా ఉపయోగించవచ్చు. అయినప్పటికీ, కీలు చాలా పెద్దవిగా మరియు నేరుగా సూచికగా ఉపయోగించలేని సందర్భాల్లో, హాషింగ్ అనే సాంకేతికత ఉపయోగించబడుతుంది.
హాషింగ్లో, పెద్ద కీలను ఉపయోగించడం ద్వారా చిన్న కీలుగా మార్చబడతాయి హాష్ విధులు . విలువలు అప్పుడు పిలువబడే డేటా నిర్మాణంలో నిల్వ చేయబడతాయికు హాష్ టేబుల్. హాష్ పట్టిక అనేది డేటా నిర్మాణం, ఇది డిక్షనరీ ADT ను అమలు చేస్తుంది, ఇది విలువలకు ప్రత్యేకమైన కీలను మ్యాప్ చేయగల నిర్మాణం.
సాధారణంగా, హాష్ పట్టికలో రెండు ప్రధాన భాగాలు ఉన్నాయి:
- బకెట్ అర్రే: హాష్ పట్టిక కోసం బకెట్ శ్రేణి పరిమాణం A యొక్క శ్రేణి, ఇక్కడ A యొక్క ప్రతి కణం “బకెట్” గా భావించబడుతుంది, అనగా కీ-విలువ జతల సమాహారం. పూర్ణాంకం N శ్రేణి యొక్క సామర్థ్యాన్ని నిర్వచిస్తుంది.
- హాష్ ఫంక్షన్: ఇది మా మ్యాప్లోని ప్రతి కీ k ని [0, N & మైనస్ 1] పరిధిలోని పూర్ణాంకానికి మ్యాప్ చేసే ఏదైనా ఫంక్షన్, ఇక్కడ N అనేది ఈ పట్టికకు బకెట్ శ్రేణి యొక్క సామర్థ్యం.
మేము వస్తువులను హ్యాష్టేబుల్లో ఉంచినప్పుడు, వేర్వేరు వస్తువులు ఒకే హాష్కోడ్ను కలిగి ఉండవచ్చు. దీనిని a తాకిడి . ఘర్షణను ఎదుర్కోవటానికి, చైన్ చేయడం మరియు ఓపెన్ అడ్రసింగ్ వంటి పద్ధతులు ఉన్నాయి.
కాబట్టి, ఇవి జావాలో కొన్ని ప్రాథమిక మరియు ఎక్కువగా ఉపయోగించే డేటా నిర్మాణాలు. ఇప్పుడు వీటిలో ప్రతి దాని గురించి మీకు తెలుసు, మీరు వాటిని మీలో అమలు చేయడం ప్రారంభించవచ్చు . దీనితో, మేము ఈ ‘జావాలోని డేటా స్ట్రక్చర్స్ అండ్ అల్గోరిథమ్స్’ కథనం యొక్క మొదటి భాగాన్ని పూర్తి చేసాము. తదుపరి భాగంలో, మేము దాని గురించి తెలుసుకోబోతున్నాముప్రాథమిక అల్గోరిథంలు మరియు వాటిని క్రమబద్ధీకరించడం మరియు శోధించడం, విభజించడం మరియు జయించడం, అత్యాశ అల్గోరిథంలు, డైనమిక్ ప్రోగ్రామింగ్ వంటి ఆచరణాత్మక అనువర్తనాలలో ఎలా ఉపయోగించాలి.
జావాలో అల్గోరిథంలు
చారిత్రాత్మకంగా సంక్లిష్ట గణిత గణనలను పరిష్కరించడానికి ఒక సాధనంగా ఉపయోగిస్తారు, అల్గోరిథంలు కంప్యూటర్ సైన్స్ మరియు ముఖ్యంగా డేటా నిర్మాణాలతో లోతుగా అనుసంధానించబడి ఉన్నాయి. ఒక అల్గోరిథం పరిమిత వ్యవధిలో ఒక నిర్దిష్ట సమస్యను పరిష్కరించే మార్గాన్ని వివరించే సూచనల క్రమం. అవి రెండు విధాలుగా ప్రాతినిధ్యం వహిస్తాయి:
- ఫ్లోచార్ట్ - ఇది ఒకఅల్గోరిథం నియంత్రణ ప్రవాహం యొక్క దృశ్య ప్రాతినిధ్యం
- సూడోకోడ్ - ఇదితుది సోర్స్ కోడ్ను అంచనా వేసే అల్గోరిథం యొక్క వచన ప్రాతినిధ్యం
గమనిక: అల్గోరిథం యొక్క పనితీరు సమయ సంక్లిష్టత మరియు స్థల సంక్లిష్టత ఆధారంగా కొలుస్తారు. ఎక్కువగా, ఏదైనా అల్గోరిథం యొక్క సంక్లిష్టత సమస్యపై మరియు అల్గోరిథం మీద ఆధారపడి ఉంటుంది.
జావాలోని రెండు ప్రధాన అల్గోరిథంలను అన్వేషిద్దాం, అవి:
జావాలో అల్గోరిథంలను క్రమబద్ధీకరించడం
సార్టింగ్ అల్గోరిథంలు జాబితా యొక్క అంశాలను ఒక నిర్దిష్ట క్రమంలో ఉంచే అల్గోరిథంలు. సంఖ్యా క్రమం మరియు లెక్సికోగ్రాఫికల్ ఆర్డర్ సాధారణంగా ఉపయోగించే ఆర్డర్లు. ఈ ‘డేటా స్ట్రక్చర్స్ అండ్ అల్గోరిథమ్స్’ వ్యాసంలో కొన్ని సార్టింగ్ అల్గారిథమ్లను అన్వేషించడానికి అనుమతిస్తుంది.
జావాలో బబుల్ సార్ట్
బబుల్ సార్ట్, తరచుగా సింకింగ్ సార్ట్ అని పిలుస్తారు, ఇది సరళమైన సార్టింగ్ అల్గోరిథం. ఇది క్రమబద్ధీకరించాల్సిన జాబితా ద్వారా పదేపదే అడుగులు వేస్తుంది, ప్రతి జత ప్రక్కన ఉన్న మూలకాలను పోల్చి, అవి తప్పు క్రమంలో ఉంటే వాటిని మార్పిడి చేస్తుంది.బబుల్ సార్ట్ దాని పేరును పొందింది, ఎందుకంటే ఇది నీటిపై తేలియాడే బుడగలు వంటి శ్రేణుల పైభాగానికి మూలకాలను ఫిల్టర్ చేస్తుంది.
ఇక్కడ ఉందిబబుల్ సార్ట్ అల్గోరిథం (ఆరోహణ క్రమ సందర్భం) ను సూచించే సూడోకోడ్.
a [] పరిమాణం యొక్క శ్రేణి N ప్రారంభం బబుల్సోర్ట్ (a []) పూర్ణాంకం i, j కోసం i = 0 నుండి N - 1 కోసం j = 0 నుండి N - i - 1 వరకు ఉంటే [j]> a [j + 1 ] ఆపై ఒక [j], ఒక [j + 1] ముగింపును తిరిగి ఇవ్వడానికి ముగింపు ఉంటే బబుల్సోర్ట్
ఈ కోడ్ N డేటా అంశాల యొక్క ఒక డైమెన్షనల్ శ్రేణిని ఆరోహణ క్రమంలో ఆదేశిస్తుంది. బాహ్య లూప్ శ్రేణిపై N-1 పాస్ చేస్తుంది. ప్రతి పాస్ డేటా ఐటెమ్లను మార్పిడి చేయడానికి లోపలి లూప్ను ఉపయోగిస్తుంది, తరువాతి చిన్న డేటా ఐటెమ్ “బుడగలు” శ్రేణి ప్రారంభంలో ఉంటుంది. కానీ సమస్య ఏమిటంటే, అల్గోరిథం జాబితా క్రమబద్ధీకరించబడిందని తెలుసుకోవడానికి ఎటువంటి స్వాప్ లేకుండా మొత్తం పాస్ అవసరం.
చెత్త మరియు సగటు కేసు సమయం సంక్లిష్టత: O (n * n). శ్రేణి రివర్స్ క్రమబద్ధీకరించబడినప్పుడు చెత్త సందర్భం సంభవిస్తుంది.
ఉత్తమ కేసు సమయం సంక్లిష్టత: పై). శ్రేణి ఇప్పటికే క్రమబద్ధీకరించబడినప్పుడు ఉత్తమ సందర్భం సంభవిస్తుంది.
జావాలో ఎంపిక క్రమబద్ధీకరణ
ఎంపిక సార్టింగ్ అనేది శోధన మరియు సార్టింగ్ రెండింటి కలయిక. క్రమబద్ధీకరించని భాగం నుండి కనీస మూలకాన్ని (ఆరోహణ క్రమాన్ని పరిగణనలోకి తీసుకొని) పదేపదే కనుగొని, శ్రేణిలో సరైన స్థితిలో ఉంచడం ద్వారా అల్గోరిథం శ్రేణిని క్రమబద్ధీకరిస్తుంది.
ఎంపిక క్రమబద్ధీకరణ అల్గోరిథం (ఆరోహణ క్రమ సందర్భం) ను సూచించే సూడోకోడ్ ఇక్కడ ఉంది.
a [] అనేది పరిమాణం N యొక్క శ్రేణి i = 0 నుండి n - 1 / * కోసం ప్రస్తుత మూలకాన్ని కనిష్టంగా సెట్ చేయండి * / min = i / * కనీస మూలకాన్ని కనుగొనండి * / j = i + 1 కోసం to n ఉంటే జాబితా [j]
మీరు కోడ్ నుండి అర్థం చేసుకోగలిగినట్లుగా, శ్రేణి ద్వారా క్రమబద్ధీకరణ ఎన్నిసార్లు వెళుతుందో శ్రేణిలోని అంశాల సంఖ్య కంటే ఒకటి తక్కువ. లోపలి లూప్ తదుపరి చిన్న విలువను కనుగొంటుంది మరియు బయటి లూప్ దాని సరైన స్థానానికి విలువనిస్తుంది. ఎంపిక క్రమబద్ధీకరణ ఎప్పుడూ O (n) మార్పిడి కంటే ఎక్కువ చేయదు మరియు మెమరీ వ్రాత ఖరీదైన ఆపరేషన్ అయినప్పుడు ఉపయోగపడుతుంది.
సమయం సంక్లిష్టత: పై2) రెండు సమూహ ఉచ్చులు ఉన్నందున.
సహాయక స్థలం: లేదా (1).
జావాలో చొప్పించడం క్రమబద్ధీకరించు
చొప్పించడం క్రమబద్ధీకరణ అనేది ఒక సాధారణ సార్టింగ్ అల్గోరిథం, ఇది ఒక సమయంలో ఒక ఇన్పుట్ మూలకాన్ని తినడం ద్వారా జాబితా ద్వారా మళ్ళిస్తుంది మరియు తుది క్రమబద్ధీకరించబడిన శ్రేణిని నిర్మిస్తుంది. చిన్న డేటా సెట్లలో ఇది చాలా సులభం మరియు మరింత ప్రభావవంతంగా ఉంటుంది. ఇది స్థిరమైన మరియు స్థలంలో సార్టింగ్ టెక్నిక్.
చొప్పించడం క్రమబద్ధీకరణ అల్గోరిథం (ఆరోహణ క్రమ సందర్భం) ను సూచించే సూడోకోడ్ ఇక్కడ ఉంది.
a [] అనేది పరిమాణం N యొక్క శ్రేణి i = 1 నుండి N కీ = a [i] j = i - 1 అయితే (j> = 0 మరియు a [j]> కీ 0 a [j + 1] = x [j] j = j - 1 ముగింపు అయితే [j + 1] = ముగింపు కోసం కీ ముగింపు చొప్పించడంసార్ట్మీరు కోడ్ నుండి అర్థం చేసుకోగలిగినట్లుగా, చొప్పించడం క్రమబద్ధీకరణ అల్గోరిథంఇన్పుట్ డేటా నుండి ఒక మూలకాన్ని తీసివేస్తుంది, క్రమబద్ధీకరించబడిన జాబితాలో ఉన్న స్థానాన్ని కనుగొని అక్కడ చొప్పిస్తుంది. ఇన్పుట్ ఎలిమెంట్స్ క్రమబద్ధీకరించబడని వరకు ఇది పునరావృతమవుతుంది.
ఉత్తమ కేసు: ఇన్పుట్ అనేది ఇప్పటికే క్రమబద్ధీకరించబడిన శ్రేణి అయినప్పుడు ఉత్తమ సందర్భం. ఈ సందర్భంలో చొప్పించే క్రమానికి సరళ నడుస్తున్న సమయం ఉంది (అనగా, & తీటా (n)).
చెత్త కేసు: సరళమైన చెత్త కేసు ఇన్పుట్ రివర్స్ క్రమంలో క్రమబద్ధీకరించబడిన శ్రేణి.
జావాలో క్విక్సార్ట్
క్విక్సోర్ట్ అల్గోరిథం అనేది వేగవంతమైన, పునరావృత, స్థిరంగా లేని విధమైన అల్గోరిథం, ఇది విభజన మరియు జయించే సూత్రం ద్వారా పనిచేస్తుంది. ఇది ఒక మూలకాన్ని పివట్గా ఎంచుకుంటుంది మరియు ఎంచుకున్న పైవట్ చుట్టూ ఇచ్చిన శ్రేణిని విభజిస్తుంది.
త్వరిత క్రమాన్ని అమలు చేయడానికి దశలు:
- తగిన “పైవట్ పాయింట్” ఎంచుకోండి.
- జాబితాలను రెండు జాబితాలుగా విభజించండిఈ పైవట్ మూలకం ఆధారంగా. పైవట్ మూలకం కంటే చిన్నదిగా ఉన్న ప్రతి మూలకం ఎడమ జాబితాలో ఉంచబడుతుంది మరియు పెద్దదిగా ఉన్న ప్రతి మూలకం కుడి జాబితాలో ఉంచబడుతుంది. ఒక మూలకం పైవట్ మూలకానికి సమానంగా ఉంటే అది ఏ జాబితాలోనైనా వెళ్ళవచ్చు. దీనిని విభజన ఆపరేషన్ అంటారు.
- ప్రతి చిన్న జాబితాలను పునరావృతంగా క్రమబద్ధీకరించండి.
క్విక్స్పోర్ట్ అల్గోరిథంను సూచించే సూడోకోడ్ ఇక్కడ ఉంది.
క్విక్సోర్ట్ (A వలె శ్రేణి, తక్కువ పూర్ణాంకం, పూర్ణాంకానికి ఎక్కువ) {if (తక్కువపై సూడోకోడ్లో, విభజన () ఫంక్షన్ విభజన ఆపరేషన్ చేస్తుంది మరియు క్విక్స్పోర్ట్ () ఉత్పత్తి ప్రతి చిన్న జాబితా కోసం విభజన ఫంక్షన్ను పదేపదే పిలుస్తుంది. సగటు కేసులో icks బి యొక్క సంక్లిష్టత & తీటా (n లాగ్ (n)) మరియు చెత్త సందర్భంలో & తీటా (n2).
జావాలో క్రమబద్ధీకరించు
విలీనం అనేది వేగవంతమైన, పునరావృత, స్థిరమైన విధమైన అల్గోరిథం, ఇది విభజన మరియు జయించే సూత్రం ద్వారా కూడా పనిచేస్తుంది. క్విక్సోర్ట్ మాదిరిగానే, విలీన క్రమబద్ధీకరణ మూలకాల జాబితాను రెండు జాబితాలుగా విభజిస్తుంది. ఈ జాబితాలు స్వతంత్రంగా క్రమబద్ధీకరించబడతాయి మరియు తరువాత కలుపుతారు. జాబితాల కలయిక సమయంలో, మూలకాలు జాబితాలో సరైన స్థలంలో చేర్చబడతాయి (లేదా విలీనం చేయబడతాయి).
విలీన క్రమబద్ధీకరణ అల్గోరిథంను సూచించే సూడోకోడ్ ఇక్కడ ఉంది.
విధానం విలీనం (a = శ్రేణి) (n == 1) ఒక var l1 ను శ్రేణి = a [0] గా తిరిగి ఇస్తే ... a [n / 2] var l2 శ్రేణి = a [n / 2 + 1] ... a [n] l1 = విలీనం (l1) l2 = విలీనం (l2) రిటర్న్ విలీనం (l1, l2) ముగింపు విధాన విధానం విలీనం (a శ్రేణి, b శ్రేణి వలె) var c శ్రేణి అయితే (a మరియు b మూలకాలు) ఉంటే ( a [0]> బి [0]) సి చివర బి [0] ను జోడించు బి నుండి బి [0] ను తీసివేయండి, లేకపోతే సి చివర [0] ను సి చివర చేర్చుము. (a మూలకాలు ఉన్నాయి) c చివర [0] ను ఒక చివర నుండి తీసివేయండి, అయితే (b మూలకాలు ఉన్నాయి) c చివరికి b [0] ను జోడిస్తే c [b] ను b చివర నుండి b [0] ను తొలగించండి సి ముగింపు విధానంవిలీనం () ఫంక్షన్ జాబితాను రెండు, కాల్స్ గా విభజిస్తుంది విలీనం () ఈ జాబితాలలో విడిగా మరియు తరువాత వాటిని విలీనం () ఫంక్షన్ కోసం పారామితులుగా పంపడం ద్వారా వాటిని మిళితం చేస్తుంది.అల్గోరిథం O (n log (n)) యొక్క సంక్లిష్టతను కలిగి ఉంది మరియు విస్తృత శ్రేణి అనువర్తనాలను కలిగి ఉంది.
జావాలో హీప్ సార్ట్
హీప్సోర్ట్ అనేది పోలిక-ఆధారిత సార్టింగ్ అల్గోరిథంబైనరీ హీప్ డేటా నిర్మాణం. మీరు దీన్ని మెరుగైన వెర్షన్ ఎఫ్ సెలక్షన్ సార్ట్గా భావించవచ్చు, ఎక్కడఇది దాని ఇన్పుట్ను క్రమబద్ధీకరించిన మరియు క్రమబద్ధీకరించని ప్రాంతంగా విభజిస్తుంది, మరియు ఇది క్రమబద్ధీకరించని ప్రాంతాన్ని అతిపెద్ద మూలకాన్ని సంగ్రహించి క్రమబద్ధీకరించిన ప్రాంతానికి తరలించడం ద్వారా కుదించబడుతుంది.
క్విక్సోర్ట్ను అమలు చేయడానికి దశలు (పెరుగుతున్న క్రమంలో):
- సార్టింగ్ శ్రేణితో గరిష్ట కుప్పను నిర్మించండి
- ఈ పాయిన్ వద్దt, అతిపెద్ద వస్తువు కుప్ప యొక్క మూలంలో నిల్వ చేయబడుతుంది. కుప్ప యొక్క చివరి వస్తువుతో దాన్ని మార్చండి మరియు కుప్ప పరిమాణాన్ని 1 తగ్గించండి. చివరగా, చెట్టు యొక్క మూలాన్ని పోగు చేయండి
- కుప్ప యొక్క పరిమాణం 1 కంటే ఎక్కువగా ఉండే వరకు పై దశలను పునరావృతం చేయండి
హీప్ సార్ట్ అల్గోరిథంను సూచించే సూడోకోడ్ ఇక్కడ ఉంది.
(I = n / 2 - 1) నుండి i> = 0 కు హీప్సోర్ట్ (a అర్రే) i = n-1 నుండి 0 స్వాప్ (a [0], a [i]) కుప్ప (a, i, 0) హెపిఫై కోసం ముగింపు కోసం ముగింపు (a శ్రేణి, n పూర్ణాంకం, i పూర్ణాంకం) అతిపెద్ద = i // అతిపెద్దదిగా రూట్ int l eft = 2 * i + 1 // left = 2 * i + 1 పూర్ణాంకం కుడి = 2 * నేను + 2 // కుడి = 2 * నేను + 2 ఉంటే (ఒక [అతిపెద్ద] ఎడమ) అతిపెద్ద = ఎడమ ఉంటే (కుడివైపు [అతిపెద్ద]) అతిపెద్ద = కుడి ఉంటే (అతిపెద్దది! = నేను) మార్పిడి ( a [i], A [అతిపెద్ద]) Heapify (a, n, అతిపెద్ద) ముగింపు heapifyఇవి కాకుండా, ఇంట్రోసోర్ట్, కౌంటింగ్ సార్టింగ్ వంటి ఇతర సార్టింగ్ అల్గోరిథంలు కూడా ఉన్నాయి. ఈ ‘డేటా స్ట్రక్చర్స్ అండ్ అల్గోరిథమ్స్’ వ్యాసంలోని తదుపరి అల్గోరిథంల వైపుకు వెళుతున్నప్పుడు, శోధన అల్గారిథమ్లను అన్వేషించండి.
జావాలో అల్గోరిథంలను శోధిస్తోంది
సాధారణ వ్యాపార అనువర్తనాల్లో శోధించడం అనేది సర్వసాధారణమైన మరియు తరచుగా చేసే చర్యలలో ఒకటి. శోధన అల్గోరిథంలు వస్తువుల సేకరణలో పేర్కొన్న లక్షణాలతో ఒక అంశాన్ని కనుగొనడానికి అల్గోరిథంలు. సాధారణంగా ఉపయోగించే రెండు శోధన అల్గారిథమ్లను అన్వేషిద్దాం.
జావాలో లీనియర్ సెర్చ్ అల్గోరిథం
సరళ శోధన లేదా వరుస శోధన అనేది సరళమైన శోధన అల్గోరిథం. మూలకం కనుగొనబడే వరకు లేదా నిర్మాణం యొక్క ముగింపు వచ్చేవరకు ఇచ్చిన డేటా నిర్మాణంలో ఒక మూలకం కోసం వరుస శోధన ఉంటుంది. మూలకం కనుగొనబడితే, అప్పుడు అంశం యొక్క స్థానం తిరిగి ఇవ్వబడుతుంది, లేకపోతే అల్గోరిథం NULL ను అందిస్తుంది.
జావాలో సరళ శోధనను సూచించే సూడోకోడ్ ఇక్కడ ఉంది:
i = 0 నుండి n-1 వరకు విధానం లీనియర్_సెర్చ్ (a [], విలువ) ఒక [i] = విలువ అయితే ప్రింట్ 'దొరికింది' రిటర్న్ ఐ ఎండ్ ప్రింట్ ఉంటే ప్రింట్ 'దొరకలేదు' ఎండ్ లీనియర్_సెర్చ్ఇది ఒకబ్రూట్-ఫోర్స్ అల్గోరిథం.ఇది ఖచ్చితంగా సరళమైనది అయినప్పటికీ, దాని అసమర్థత కారణంగా ఇది చాలా సాధారణం కాదు. సరళ శోధన యొక్క సమయం సంక్లిష్టత పై) .
జావాలో బైనరీ శోధన అల్గోరిథం
బైనరీ శోధన, లాగరిథమిక్ సెర్చ్ అని కూడా పిలుస్తారు, ఇది ఇప్పటికే క్రమబద్ధీకరించబడిన శ్రేణిలో లక్ష్య విలువ యొక్క స్థానాన్ని కనుగొనే శోధన అల్గోరిథం. ఇది ఇన్పుట్ సేకరణను సమాన భాగాలుగా విభజిస్తుంది మరియు అంశం జాబితా యొక్క మధ్య మూలకంతో పోల్చబడుతుంది. మూలకం కనుగొనబడితే, శోధన అక్కడ ముగుస్తుంది. లేకపోతే, లక్ష్య మూలకం మధ్య మూలకం కంటే చిన్నదిగా లేదా పెద్దదిగా ఉంటే దాని ఆధారంగా, శ్రేణి యొక్క తగిన విభజనను విభజించి, ఎంచుకోవడం ద్వారా మేము మూలకం కోసం వెతుకుతూనే ఉంటాము.
జావాలో బైనరీ శోధనను సూచించే సూడోకోడ్ ఇక్కడ ఉంది:
విధానం బైనరీ_సెర్చ్ శ్రేణి x విలువ యొక్క క్రమబద్ధీకరించబడిన శ్రేణి n పరిమాణాన్ని దిగువబౌండ్ = 1 ఎగువబౌండ్ = n శోధించగా, ఎగువబౌండ్ అయితే x కనుగొనబడలేదుఎగువబౌండ్ (మా పాయింటర్) లోవర్బౌండ్ (చివరి మూలకం) దాటినప్పుడు శోధన ముగుస్తుంది, ఇది మేము మొత్తం శ్రేణిని శోధించామని మరియు మూలకం లేనట్లు సూచిస్తుంది.శీఘ్ర శోధన సమయం కారణంగా ఇది సాధారణంగా ఉపయోగించే శోధన అల్గోరిథంలు. బైనరీ శోధన యొక్క సమయం సంక్లిష్టత పై) ఇది గణనీయమైన మెరుగుదల పై) లీనియర్ సెర్చ్ యొక్క సమయం సంక్లిష్టత.
ఇది ఈ ‘జావాలోని డేటా స్ట్రక్చర్స్ అండ్ అల్గోరిథమ్స్’ వ్యాసం చివరకి మనలను తీసుకువస్తుంది. నేను జావా యొక్క అత్యంత ప్రాధమిక మరియు ముఖ్యమైన అంశాలలో ఒకదాన్ని కవర్ చేసాను.ఈ వ్యాసంలో మీతో పంచుకున్న అన్ని విషయాలతో మీరు స్పష్టంగా ఉన్నారని ఆశిస్తున్నాము.
మీరు వీలైనంత వరకు ప్రాక్టీస్ చేశారని నిర్ధారించుకోండి మరియు మీ అనుభవాన్ని తిరిగి పొందండి.
చూడండి ప్రపంచవ్యాప్తంగా 250,000 కంటే ఎక్కువ సంతృప్తికరమైన అభ్యాసకుల నెట్వర్క్తో విశ్వసనీయ ఆన్లైన్ లెర్నింగ్ సంస్థ ఎడురేకా చేత. మీ ప్రయాణంలో అడుగడుగునా మీకు సహాయం చేయడానికి మేము ఇక్కడ ఉన్నాము, ఈ జావా ఇంటర్వ్యూ ప్రశ్నలతో పాటుగా, మేము జావా డెవలపర్గా ఉండాలనుకునే విద్యార్థులు మరియు నిపుణుల కోసం రూపొందించిన ఒక పాఠ్యాంశంతో ముందుకు వచ్చాము.
మాకు ప్రశ్న ఉందా? దయచేసి ఈ ‘జావాలోని డేటా స్ట్రక్చర్స్ అండ్ అల్గోరిథమ్స్’ యొక్క వ్యాఖ్యల విభాగంలో పేర్కొనండి. వ్యాసం మరియు మేము వీలైనంత త్వరగా మిమ్మల్ని సంప్రదిస్తాము.