క్విక్సోర్ట్ అనేది డివైడ్ & కాంక్వెర్ అల్గోరిథం. డివైడ్ & కాంక్వెర్ అల్గోరిథం డిజైన్ ఉదాహరణలో, మేము ఉప సమస్యలలోని సమస్యలను పునరావృతంగా విభజిస్తాము, తరువాత ఉప సమస్యలను పరిష్కరిస్తాము మరియు చివరికి తుది ఫలితాన్ని కనుగొనడానికి పరిష్కారాలను మిళితం చేస్తాము. ఈ వ్యాసంలో మేము క్విక్సార్ట్ ఇన్ పై దృష్టి పెడతాము
ఈ వ్యాసంలో క్రింది గమనికలు కవర్ చేయబడతాయి,
ప్రారంభిద్దాం!
సమస్యలను ఉప సమస్యలుగా విభజించేటప్పుడు గుర్తుంచుకోవలసిన విషయం ఏమిటంటే, అసలు సమస్యల ప్రకారం ఉప సమస్యల నిర్మాణం మారదు.
డివైడ్ & కాంక్వెర్ అల్గోరిథం 3 దశలను కలిగి ఉంది:
- విభజించండి: సమస్యను ఉపప్రాబ్లమ్లుగా విడగొట్టడం
- జయించండి: ఉప సమస్యలను పునరావృతంగా పరిష్కరించడం
- కలపండి: తుది ఫలితాన్ని పొందడానికి పరిష్కారాలను కలపడం
డివైడ్ & కాంక్వెర్ పారాడిగ్మ్ ఆధారంగా వివిధ అల్గోరిథంలు ఉన్నాయి. త్వరిత క్రమబద్ధీకరణ & విలీన క్రమబద్ధీకరణ వాటిలో ఉన్నాయి.
క్విక్సోర్ట్ యొక్క చెత్త-సమయ సంక్లిష్టత O (n2) అయినప్పటికీ, ఇది విలీన క్రమబద్ధీకరణ మరియు కుప్ప క్రమబద్ధీకరణ వంటి అనేక ఇతర సార్టింగ్ అల్గోరిథంల కంటే ఎక్కువ, క్విక్సోర్ట్ ఆచరణలో వేగంగా ఉంటుంది, ఎందుకంటే దాని లోపలి లూప్ చాలా నిర్మాణాలపై సమర్థవంతంగా అమలు చేయవచ్చు మరియు చాలా వరకు వాస్తవ ప్రపంచ డేటా.
త్వరిత క్రమబద్ధీకరణ అల్గోరిథం అమలు గురించి మాట్లాడుదాం. క్విక్సోర్ట్ అల్గోరిథంలు పైవట్ ఎలిమెంట్ను తీసుకుంటాయి మరియు పివట్ ఎలిమెంట్ చుట్టూ శ్రేణిని విభజిస్తాయి. క్విక్సాట్ యొక్క వైవిధ్యాలు చాలా ఉన్నాయి, ఇది మీరు పైవట్ మూలకాన్ని ఎలా ఎంచుకుంటారనే దానిపై ఆధారపడి ఉంటుంది. పైవట్ మూలకాన్ని ఎంచుకోవడానికి బహుళ మార్గాలు ఉన్నాయి:
- మొదటి మూలకాన్ని ఎంచుకోవడం
- చివరి మూలకాన్ని ఎంచుకోండి
- యాదృచ్ఛిక మూలకాన్ని ఎంచుకోవడం
- మధ్యస్థ మూలకాన్ని ఎంచుకోవడం
అర్థం చేసుకోవలసిన తదుపరి ముఖ్యమైన విషయం ఏమిటంటే, త్వరిత క్రమబద్ధీకరణ అల్గోరిథంలో విభజన () ఫంక్షన్. పైవట్ మూలకాన్ని తీసుకోవటానికి విభజన ఫంక్షన్, దానిని కుడి స్థానంలో ఉంచుతుంది, పివట్ మూలకం కంటే చిన్న అన్ని మూలకాలను దాని ఎడమ వైపుకు కదిలిస్తుంది మరియు అన్ని మూలకాలు దాని కుడి వైపున ఉంటాయి. క్విక్స్పోర్ట్ అలా చేయడానికి సరళ సమయం పడుతుంది.
అప్పుడు శ్రేణి పివట్ మూలకం నుండి రెండు భాగాలుగా విభజించబడింది (అనగా పైవట్ కంటే తక్కువ మూలకాలు & పివట్ కంటే ఎక్కువ మూలకాలు) & రెండు శ్రేణులు క్విక్సోర్ట్ అల్గోరిథం ఉపయోగించి పునరావృతమవుతాయి.
క్విక్సోర్ట్ అల్గోరిథం యొక్క పనిని ఇప్పుడు మేము అర్థం చేసుకున్నాము. జావాలో క్విక్సోర్ట్ అల్గారిథమ్ను ఎలా అమలు చేయాలో అర్థం చేసుకుందాం.
క్విక్సార్ట్ ఫంక్షన్:
/ * క్విక్సోర్ట్ ఫంక్షన్కు శ్రేణి అతి తక్కువ & అత్యధిక సూచికతో క్రమబద్ధీకరించబడాలి * /
void sort (int arr [], int lowIndex, int highIndex) {// lowIndex వరకు = highIndex if (lowIndexఇప్పుడు విభజన కోడ్ ఎలా పనిచేస్తుందో అర్థం చేసుకుందాం.
విభజన కోడ్
విభజన కోడ్లో, చివరి మూలకాన్ని పివట్ ఎలిమెంట్గా ఎంచుకుంటాము. మేము పూర్తి శ్రేణిని దాటుతాము (అనగా మా విషయంలో వేరియబుల్ j ని ఉపయోగించడం). మేము శ్రేణిలోని చివరి అతిచిన్న మూలకాన్ని ట్రాక్ చేస్తాము (అనగా మా విషయంలో వేరియబుల్ i ని ఉపయోగించడం). మేము పైవట్ కంటే చిన్న మూలకాన్ని కనుగొంటే, మేము స్వాప్ కరెంట్ ఎలిమెంట్ను [j] ను అర్ర్ [i] తో కదిలిస్తాము, లేకపోతే మనం ప్రయాణించడం కొనసాగిస్తాము.
int విభజన (int arr [], int lowIndex, int highIndex) {// చివరి మూలకాన్ని పివోట్గా తయారుచేయడం int pivot = arr [highIndex] // పివట్ int i = (lowIndex-1) నుండి చిన్న మూలకాలను ట్రాక్ చేయడానికి i ని ఉపయోగించడం. (int j = lowIndex jఇప్పుడు మీరు క్విక్స్పోర్ట్ & విభజన ఫంక్షన్ను అర్థం చేసుకున్నారు, పూర్తి కోడ్ను శీఘ్రంగా చూద్దాం
క్విక్సార్ట్ జావా కోడ్
క్లాస్ క్విక్సోర్ట్ {// విభజన విధానం Int విభజన (int arr [], int lowIndex, int highIndex) {int pivot = arr [highIndex] int i = (lowIndex-1) (int j = lowIndex j// సార్టింగ్ విధానం
void sort (int arr [], int lowIndex, int highIndex) {if (lowIndex// శ్రేణిని ముద్రించే విధానం
జావాలో కుప్ప మరియు స్టాక్ మెమరీstatic void printArray (int arr []) {int n = arr.length for (int i = 0 i// ప్రధాన విధానం
పబ్లిక్ స్టాటిక్ శూన్య ప్రధాన (స్ట్రింగ్ అర్గ్స్ []) {int arr [] = {101, 37, 68, 29, 11, 5} int n = arr.length QuickSort ob = new QuickSort () ob.sort (arr, 0, n-1) System.out.println ('క్రమబద్ధీకరించిన శ్రేణి') printArray (arr)}}అవుట్పుట్:
ఇప్పుడు పై జావా ప్రోగ్రామ్ను అమలు చేసిన తర్వాత క్విక్సోర్ట్ ఎలా పనిచేస్తుందో & జావాలో ఎలా అమలు చేయాలో మీరు అర్థం చేసుకుంటారు.ఈ విధంగా మేము ‘జావాలోని క్విక్సోర్ట్’ పై ఈ వ్యాసం చివరకి వచ్చాము. మీరు మరింత తెలుసుకోవాలనుకుంటే,చూడండి విశ్వసనీయ ఆన్లైన్ లెర్నింగ్ సంస్థ ఎడురేకా చేత. ఎడురేకా యొక్క జావా J2EE మరియు SOA శిక్షణ మరియు ధృవీకరణ కోర్సు కోర్ మరియు అధునాతన జావా భావనలతో పాటు హైబర్నేట్ & స్ప్రింగ్ వంటి వివిధ జావా ఫ్రేమ్వర్క్ల కోసం మీకు శిక్షణ ఇవ్వడానికి రూపొందించబడింది.
మాకు ప్రశ్న ఉందా? దయచేసి ఈ బ్లాగ్ యొక్క వ్యాఖ్యల విభాగంలో దీనిని ప్రస్తావించండి మరియు మేము వీలైనంత త్వరగా మిమ్మల్ని సంప్రదిస్తాము.