新的排序机制

本文关键字:机制 排序 | 更新日期: 2023-09-27 18:14:24

我正在尝试发明一辆早就应该发明的自行车。

所以,我已经排序了字典:

1: val1,2: val3,3: val3

现在,我需要在不移动键(2和3)的情况下在1-2键之间插入新项。有一种方法-插入具有1.5值的键,但问题是我可以在1-2之间插入多少项以及哪种算法适合这样做。

可以在它们之间插入N项......

键的数据类型或格式不重要,关键是键不改变

新的排序机制

可以使用字母作为键。新键将由上一个键和下一个键的字符串连接。

例如:

如果你有A和B,新键将是AB:

A
AB (A + B)
B

在A和AB之间添加新键,您将得到AAB:

A
AAB (A + AB)
AB (A +B)
B

您可以使用Java中的BigDecimal来获得new_key=(key1+key2)/2

import java.math.BigDecimal;
public class CodeSheet {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal(1);
        BigDecimal two = new BigDecimal(2);
        for(int i = 0; i <= 6000;i ++)
        {
            a = a.divide(two);
            if (i%1000 == 0)
                System.out.println(a.toString());
        }
    }
}
输出:

0.5
4.666318092516094394950447723619085848085457231858540123108571698979834554878878172272201635489405511797974949651621213121077437606770161974207604086019653781172053330691625751369975379929509157555502453981325565591202562573979668954025891355627075519053491894272132405597349071143304796110088314552213992280847244435737332640031641842263237146309149310826013965976447468035589253318343705327199027653590681602999224130209770506066148149347510972573049521073043341806223964760174134323088289634580237100329681945208689479110591825390227783142221369626937585639273983907781732018574388408834499276960346327197120043559868373508749313133453736483812679019646881169169905234639372793026268482208251953125E-302
4.354904908108608337788097747389436147929551871352694308321746614749144426703133706892369375399893940532782043588727560318102151185994168162541395412261518430550755321155148659223854561694954711924029281870986173595315518548585511706690334120707350364118146386757419736828045574038868295421914635929079059744555673086284578352082725382878484893441482333124196570054633787834328204149323035102391048682919453726835836055542393496585133335537308533180937973567503195969258360476033334393391821525284565813777886412721596101172364149931162673561491299813436308231347105575294992080347939004544602896748346183684569136737241491985864479016388335577898767470263560575437108148985779824881400524519876725232838928477267134127170926478227142121467310560266975687300142692457732481335134494432171071782408627253792130227205541778953790826318813538185488987468045762324286746160892737356344542977960827017103483581102720485435212671525873919071359975592227058010595009966338494815791830176096729490346274067433317969857326763618026109468018115811724815116133999445116665877671509729075069315638648723850028991409064960833766332205861977229046767218582849546541487471215035845260620260257995532242830003020146307439405502318054114708229860672592763223579453418947532879305088491927160146050190013971612697710103760111069333206902362883772710769598910416379683242622746115746412698399581131525337696075439453125E-603
4.064274312778867720235939028734255660766324543474839164530422188377250904692462466209591864260587971411331478774338224911275926886702626758550412028002712137706367368146396620253064136127073264858942335915257829998865098421249280979778656504235680311966272657056163696546167149941924660404935695895945028011534537971659758008693505558573200513078683510452651595620409830786639557494530833737093935568272875104139425826158032062394577918465219998245130052918160097042806762070602493653493626216406119810227553087853066722753388827490288177690729623901043570687373981862722140724176570320050741221327417827648494038121701089062505713056402546071605393776743633905210424237918734689348418886901559587016827788694266756655317144124682859190661867093972217932288628949680878455501011902943704213579623344964181809419242960540066091034125167128849103858978675507408455806146209191851472240678382070178087429856622047212175931655973014000019630325498473096560571602518169186419530087543188764835897219142880682252597989279812191578193716163187575327957591625965057446212814094560426730589262600928737872525933767331411105248595121827696798608491093243582843484129095100597421642936657760266153001856285613174837664729189258437310502932083077322244297462818854139350309998096123305359911095115904480646457999254743328163360465724236166676478809329603593817106724193744306683490394814672540103839616421520608733694040189710678874823730575477314252903579788549424755469905133470201451695223803806440596745401726146987923905610169014059776971596451074394178160713636961030621285663930888688208102523067395389210836279358605667255768920628104803766115059613394743085226143092748238730794960406636454230915469276113065925011064938129865019339567665464818230330165724148468941280304362503380341826473700203394927473837564110162168494638664204304239237821253725128209855798555318373561952586104070384276660875768023522310029611970728612015242875836349942659673401524737492334455205215164285934911013390410191470865217345765170604606902120008883954298607285769450192614645096800263246450413134880363941192626953125E-904
3.793039351733689286115602651843418575407592505563559767838544978475768217731986254376334108338556729108108742576832030998209717600316405171714055148655625096531883980134466070609936781559539370211169480252948213114277039837881063371677982969942447634651142331829192990506994554605009729046508341063337270064533739907321744792853183498549053351652988350920074096638285429862308391372954932006828359193622721419231928621489711340365241716248314514812885520219410680477334527856708284138839427973457868801553311949616569124359090488609460035208780642970555722141753015176081595007867635360093435776178190543350036841708399408539367940510076413956467316430916095391711744186998859008657799555644735253422641584786163850401369234332768914588781386187196795711351724957749391652361622962074629197788024298287754370852707402508636707853904761054362146259460871849920284565328911164746852351234728953672011980064743223911894197685446274274878390523329351901158826070800120347703561421615880371006639670348315766341149012537464083758587758525293663683636298511446099289911714323531235991277865531867843982015026878878896639255995472483117790417639250799634307655748030779632564691596760909404908081531372615164547043388535489528971883752026521919961407668947083407213423974005267001744595617615696630765504428689036809351860875424035621037482616342322215337934367594548330261003594070152341849674175878158149298226389343930852958679143549606816591025602305342014955716217132845940342769543266933325261087375477444832336677288699401172623142002746821390322113408026398127154228190552042800992261198805194376694845540628905243504033734992985876301276630991930510298121466339193065893457487944766698446689827603944852943168637004615202567494167670399243323951589706415785266079343514108658745562117732680244677936376530687808055754082068450365935259713154646823097603333358068171497216860297611437752243167697698110498170845456846020739750846543505713643988984041854908770199868636242151130688332117043118748773610315628039566704014306672360451008845657691837507078328158864945109567892609789595433570269036167524293587898139314884455743023719471414397201222765928299092144157389940419386413023206471168462291245388659261327754572315524233871897164259808663363315096885766828683298944863773587092451238950045819754126102259768472365375016760732714067551948222283479589066389122654198832035706196138937569618393555906093460831093138264657632808502714703693332035925939820567323717250446576767156644591421419293812145057111017406654972022884869525035195784771466087933420259995884070837958397749799705740049396202644025175073210593295755945620102108055480516934702115224195574139195098066319855672558679043638893669794670155410997428664928664168167953985116161210250297804169594684253752348013222217559814453125E-1205
3.539905630524086446192807579347028776473774255169715679364915111773183629594894261784683085891047097454394867262819826695919103869940157295563047917870123862073200485978698667987466291462969557667523695647811341020357717788109785770835114680897009767915137494440566026455659843912354456504192989188835705602179322924963912494888485940786809362154139116461482007358821801406237669112276567068833410302769662102872588881507070273133853988209179248987257143758222330905918518632062135785476152084443626925203518301132960766835299892043190742792567520558478108203462259662371962959310432074095927058133868959474972030842142538796230184620128885276788174481960845142745183370519589551950615610131186590563480089317314601509944118002032875732033201100247110459481847952990857037334823640679523424278765589162449234968023799573915320394430700449823949488280250506135330963124231931659920285823325225449622471007698126353485005939406839811953394571738969314132530527602613221562230127655722757290505931769316848401723278194683296217306185235865569986617096202061546172423665496763554374618060106337325218559850235824014071278034559473690204207288687313849631758829607486091753593924248760771142255825210360672986637626679989741155885434700486067230410700299575535149711341731609432984480384687544635995062804471136149305854175315966377810108275507681181651961962801421349165404250346126820728720208873595893440536648422148718112505064284071060898109782417605476476280361232169023368205490847212108780363322062863780340391237551435459420246337892681095889721559462791278479989710590315029810407934507056226372627879032580698604457266468300386458407724348590681589801941083795722493502969765170120695678675515620032539600652057815256453699379920243695102441630342646026753909888234075230277217434906456997302645472831528972628145734383468385440223694543434021735982488952306335977309013169460467883641860640785227636310262987940964022984673469826568517571050125270818176149707331140910524347851732575390841829346909410549839727953705987962211317256181818751290463639370119897704800571364206619105262584707180671238507585849999073849197663824198883130260095040819592313094603646217985433953185704099370284536904773266787536901400506007032774257894058018064436730924099462051548954038384791968747068019217638045788829854591320600007159149841443555646570855081618024360520958578760360280384849375071676855716557180607139713205883919099032478943967247930537312162289144679104372615090011632866858961375079019575267407833271784593151520703411904218370807609740113466986453924875951953906379335261873299732057632583548583707287549651159936981092460393588420646863927581217105974812665362938650418397789045364604339496313477110578729246893510209369181042422940691767021001414072916609146366788913996755700759640665234784333407084341110051886643788328930564570244055170922341783514820106649871716205106654635196708758096609371010578371733787205786872007626789590831722266502098400838009325576368679530618235118703501791946624067543742495370252936490448215272265394446201505681555959785096101950998232539156908671549704321558751663495139442633882009657071823899139741961998266368147671510768218115426296064382005662529050949281621806147707102909461952974903326945256007076524833299463667109290119355903366196219833733413695411303379451823231753263731780865552172559852473440089366781507217094187589639337530070328546865963879643466871402819511600155281016186295822285089803134472408174815427628345787525177001953125E-1506
3.303665137902827496041698814598251859956102752695243457545238134313877538516687455245209321720638823230490006282381480310772444510034045211226314330774840068284288371196446260296884583517814706659635628162189026783047191826750267043225489400771903093944259276619029927475346438031545811605946374504442097006994262477824439348857706776768617486310581249836618919417304749430900959706561113042262150517874802265433077999641328682509847882884924517121017190187846542512359062550646298184979756438755292545173270616579147035775541385671706654033870782649215204956912887364382156195690188215651083844934438738698733214152401938270023834336874746163318149027984994858285136502541795338316312101997589022837431637236440456040998512077161206236019051712081611565644859268804662919202586363218603552752695270832099692390467113884066534323925557128328604171993970853722160012919159551842690982027464367161257179808021863759049562797978645493867537105954179930724913679481936875402812572711930723882070284861941929119558170827897315859162842037326796133850257021269068336533236923850739658611999378702648242711666129597638095361076728543262011326217083677875215772308541136175153691149435654095931864251712782144524369655589716904881617799361462290466021866259726962247117462012115278442296220542386536419650551473602369400134797477831217636135509200328610036257616743356234677813111634192132502323701745358218078779524266341964037873127937848830826508508164096259725938628931626670796735885682591634721884490231165098692815205140693977889952801242893472229120340032093869453762832972291859794557911577639522395307940732945712107075755019740490962937164728167213432768492138733750524266274699077375733962811982278517502963812611476393952844259367082860095303675299020089115276657994155137119249817329420480064676642884472827028871906976341796718053546757401432467583130922019249330985492860548855596939221967584883875415697012658344666072424828836624264487286028591464953422057358292453173183196474756535257290117885536909618270459398220468815577926370607214507553414003598631496358187812992866734203795256335459900517763162601851984742584705374313070085033751129575420554964387441175846286562452089320606255797752016105950464227482065705408603260648257826551443686687882577303155206625947223484819915238490514881825717999121457137657714149353624922334220725600291951263162279298695401753356778309665095213843636885555987498807740209599646730604620908084012544399944192020917084890415757520265442239383238645767041482207162970579811093177791400644934010615516814079728309548220856096973675927990639940709613458493245984563211702111448359648433511680438377616298772795422516698822911002375856354580413147635506696458049588867868603320909589298339689100758949758682637103963988827307318959090420171350280219793288216670756666823872989199717083589126986974586632039928270417894835660021707866194543009725663505202689205234311075475898182424450167657545369789105339884283826964391562437254380134403620648901996109597800217991087232739433333005261148105778006362388323395808747788471187188991174879178895896934383118524229645808772348052329685868454757816134812834066970450014033639076242933255140291275675316837272240534404493876145292713293434547248272013302450195929488069705299508393401903558199250780015449549549844411621136134455877441994562247110233939116211180769579609101363083680816625026801067799314561701358285026548146460110929528534340290355738799466322677694228254707089730120937598182249688132410408196248344124873312357113507547279516555232213828894450359208043156415786747942667569034278302758632332792966168589148561952529827676455867620718491121519566778267284946472728779868353591764888425242532390195600063363530440734986641188564192928244738736960706468674352679639622457403160943430629924686778742180857897037492647553965360571395423889393190136792132808820964280842098926546195726573957235872072771514703732911328337271024285339124370833436519397291514689017778437236176793239632328400000098733961965128704164600778553840026356764016848771447647824695319245247442729526830585151011874390308115411481581839039062066822663560644921007465348898536790234192750403963145799934864044189453125E-1807

它可以存储至少6000条记录…(可能性小,key/2总是最小)

Java的BigDecimal的实现有一些缺陷,如果需要,您可以自己实现一个。