Բովանդակություն:
Video: Ինչպե՞ս եք իրականացնում երկուական որոնման ծառը Java-ում:
2024 Հեղինակ: Lynn Donovan | [email protected]. Վերջին փոփոխված: 2023-12-15 23:48
Երկուական որոնման ծառի (BST) ներդրում Java-ում
- Հանգույցի ձախ ենթածառը պարունակում է միայն հանգույցներ, որոնց բանալիները պակաս են, քան հանգույցի բանալին:
- Հանգույցի աջ ենթածառը պարունակում է միայն հանգույցներ, որոնց բանալիներն ավելի մեծ են, քան հանգույցի բանալին:
- Ձախ և աջ ենթածառը նույնպես պետք է լինի a երկուական որոնման ծառ .
- Կրկնվող հանգույցներ չպետք է լինեն:
Նաև հարց է, թե ինչպես է իրականացվում երկուական որոնումը Java-ում:
Տեսնենք երկուական որոնման օրինակ java-ում, որտեղ մենք պատրաստվում ենք որոնել տարր զանգվածից՝ օգտագործելով ռեկուրսիա:
- դասի BinarySearchExample1{
- հանրային ստատիկ int biarySearch (int arr, int առաջին, int վերջին, int բանալի){
- եթե (վերջին>=առաջին){
- int mid = առաջին + (վերջին - առաջին) / 2;
- եթե (arr[mid] == բանալի){
- վերադարձ կեսին;
- }
Երկրորդ, որտեղ ենք մենք օգտագործում երկուական որոնման ծառը: Երկուական որոնման ծառ - Օգտագործված շատերի մեջ որոնում հավելվածներ, որտեղ տվյալները անընդհատ մուտքագրվում/հեռանում են, օրինակ՝ քարտեզը և բազմաթիվ լեզուների գրադարաններում սահմանված օբյեկտները: Երկուական Տիեզերական բաժանում - Օգտագործված գրեթե յուրաքանչյուր 3D վիդեոխաղում՝ որոշելու, թե ինչ առարկաներ պետք է ներկայացվեն:
Այսպիսով, ինչպես են ձևավորվում երկուական ծառերը:
Երկուական ծառի ստեղծում՝ օգտագործելով ռեկուրսիա
- Կարդացեք տվյալները x-ով:
- Հիշողություն հատկացրեք նոր հանգույցի համար և հասցեն պահեք ցուցիչում p.
- Պահպանեք x տվյալները p հանգույցում:
- Ռեկուրսիվ կերպով ստեղծեք p-ի ձախ ենթածառը և դարձրեք այն p-ի ձախ զավակը:
- Ռեկուրսիվ կերպով ստեղծեք p-ի ճիշտ ենթածառը և դարձրեք այն p-ի ճիշտ զավակը:
Ո՞րն է երկուական որոնման բարդությունը:
Երկուական որոնում աշխատում է ամենավատ լոգարիթմական ժամանակում՝ կատարելով O(log n) համեմատություններ, որտեղ n-ը զանգվածի տարրերի թիվն է, O-ը Big O նշումն է, իսկ log-ը լոգարիթմն է: Երկուական որոնում վերցնում է հաստատուն (O(1)) տարածություն, ինչը նշանակում է, որ ալգորիթմի կողմից վերցված տարածությունը նույնն է զանգվածի ցանկացած թվով տարրերի համար:
Խորհուրդ ենք տալիս:
Ինչպե՞ս եք իրականացնում նախօրոք տիպի որոնումը:
Typeahead որոնումը տեքստի աստիճանական որոնման և զտման մեթոդ է: Տառատեսակի իրականացում: js Բացեք ձեր որոնման տուփը պարունակող ձևանմուշը: Փաթեթավորեք մուտքագրման դաշտը տարայի մեջ id=”remote”-ով Մուտքի դաշտին տվեք typeahead դաս: Կաղապարին ավելացրեք հետևյալ սցենարը
Որոնք են որոնման համակարգերը, որոնք փնտրում են այլ որոնման համակարգեր:
Մեր որոնողական արկածը սկսելու համար եկեք դիտարկենք մի քանի ընդհանուր որոնման համակարգեր, որոնք դուրս են լավագույն երեքից: DuckDuckGo. Մտահոգվա՞ծ եք առցանց գաղտնիության համար: Որոնել գաղտնագրել: Փնտրու՞մ եք DuckDuckGo-ի այլընտրանք: Էկոզիա. Ուզու՞մ եք ծառեր տնկել, մինչ դուք փնտրում եք: Շան կույտ. Բլեկկո. ՎոլֆրամԱլֆա. Գիգաբլաստ. Facebook որոնում
Ինչպե՞ս գտնել երկուական որոնման կեսը:
Հաշվի առնելով տեսակավորված զանգվածը՝ մենք գտնում ենք ամենամիջին տարրը և ստեղնով ստուգում տարրը: Եթե ամենամիջին տարրը հավասար է բանալիին, մենք գտել ենք բանալին: Եթե ամենամիջին տարրը մեծ է բանալինից, մենք որոնում ենք ամենամիջին տարրի ձախ կեսում, հակառակ դեպքում՝ աջ կեսում:
Որո՞նք են երկուական որոնման ծառի ամենավատ դեպքերը և դեպքերի միջին բարդությունը:
Երկուական որոնման ծառ Ալգորիթմ Միջին Ամենավատ դեպքը Տարածություն O(n) O(n) Որոնել O(log n) O(n) Տեղադրել O(log n) O(n) Ջնջել O(log n) O(n)
Ո՞րն է երկուական որոնման մեծ O-ն:
Երկուական որոնումն ավելի արագ է, քան գծային, բացառությամբ փոքր զանգվածների: Երկուական որոնման ալգորիթմ. Երկուական որոնման ալգորիթմի պատկերացում, որտեղ 7-ը թիրախային արժեքն է Դասի որոնման ալգորիթմ Լավագույն դեպքի կատարումը O(1) Միջին կատարումը O(log n) Տարածության վատագույն բարդությունը O(1)