Snabb sortera (5 / 7 steg)

Steg 5: Genomför qs_partition



Bakgrund

Innan jag går att implementera funktionen quick_sort, måste vi förstå att quick_sort inte göra mycket arbete själv. Vår qs_partition funktion gör det mesta av arbetet. qs_partition tar en vektor med heltal, en vänster gräns i arrayen och en höger fältetikettsgräns i arrayen som parametrar och returnerar ett heltal, precis som huvudsakliga.

* Obs: eftersom ett bibliotek vi använder (algorithm.h) redan har en funktion kallad partition, vi kallar våra partition funktion qs_partition.

Mål

Qs_partition uppgift är att välja ett nummer i matrisen som en pivot och separera alla talen i matrisen in i två grupper: de som är mindre än eller lika med pivot och de som är större. Det förlägger alla mindre eller lika nummer innan pivot och alla större nummer efter. Här är ett sätt som kan vara fulländad.

Steg

1) qs_partition först tar det första är det tillåtet att röra (objektet i den vänstra gränsen) och kallar det en pivot. Det finns inget speciellt händer här. Funktionen gör först bara förklara att ett värde som kallas pivot är lika med det första objektet som funktionen tillåts att få tillgång till.

2) på samma sätt, vi kallar en variabel toSwap och tilldela den index av vridningen.

3) vi kör sedan genom arrayen, titta på varje objekt från det andra värdet till på höger fältetikettsgräns. Vi jämföra inte det första värdet till värdet som pivot eftersom först värde är värdet som pivot.

4) på varje plats jämför vi värdet vid den platsen till våra pivot. Om värdet är mindre än eller lika med pivot, vill vi flytta värdet så långt mot början av matrisen som möjligt. Det är där toSwap kommer in. Vi ska byta värdet vid toSwap (eftersom toSwap är ett index) och det aktuella värdet ser vi, då vi ska öka toSwap med ett så vi inte byta ut de värden tillbaka ut i mitten av matrisen.

5) när vi har kört igenom alla nummer, representerar vårt toSwap index platsen där vi vill placera våra pivot. Så ska vi byta det vid toSwap och pivot värdet. Slutligen vi kommer tillbaka, eller skickas tillbaka till den funktion som kallas qs_partition, index för där vi sätter pivot. Här ser du varför snart.

Recension

Förhoppningsvis kan du se att vi har skapat den önskade effekten genom att byta sekventiellt tal mindre än pivot till första plats efter vår senaste swap,: alla siffror innan pivot är mindre än eller lika med pivot och alla siffror efter den större.

Se Steg
Relaterade Ämnen

Kapacitiv markfuktighet mäta (med I2C)

Mycket har skrivits om hur man mäter markfuktighet och framför allt på vilken sensor du använder.Med den enkla motstånd mäta är den största frågan korrosion av sensorn, inte bara eftersom det är i kontakt med jorden men också eftersom det är en DC nu...

Snabb ficklampa en sorts eller på värsta snabbis vetenskap projekt

en annan användning för delar från kastas ut mikron. Jag gick inte alla dioder eller kondensator på den. Någon annan kan.Steg 1: 110 VAC 60 Hz inre minskning gear motor jag vet inte hur vanligt detta är längre i mikrovågsugnar eller andra apparater s...

En mycket snabb elektrisk linje flygplan.

jag har byggt upp detta projekt under många år med studenter i mina tech klasser. Det är lätt att bygga och flyger mycket snabbt... även tillräckligt snabbt för att imponera på studenter! Du kan skräddarsy projektet så att det är en enkel 2 klass til...

Chibikart: Snabb-prototyper en subminiatyr elektriska Go-Kart använder Digital fabrikation och Hobby komponenter

Chibikart! är en mycket liten ändå kraftfull och lättmanövrerad 2WD elektriska go-kart som du kan bygga med off-the-shelf industri och hobby komponenter och digitalt fabricerade ram delar. Med moderna litiumjonbatterier och borstlösa permanentmagnet...

Alsation-style Pizza, snabb-baka goda snacks

Alsace är kanske mest känd för sin skarpa vita viner, vacker arkitektur, häckande storkar och quiche men har också en mängd läckra mindre kända recept, inklusive denna tunn skorpa, snabb baka pizza. Flammekueche/Flammkuchen/Tarte flambée som namnet a...

Hur organiserar jag min tråd samling (och där varje sort finns oftast)

Jag har aldrig köpt en tråd i mitt liv!Alla kablar i min samling bärgades gratis, och andra de som ser köpt (där ett par 14 gauge spolar som jag fick gratis) är sådana som jag fått eller hittade gratis!Jag har listat steget från används mest brukade,...

Återvinning Bin sortera och återvinna dina sopor

jag började återvinna jag inte har en gatan plocka upp så jag ville ha något som kunde sortera och håll metall glas och plastSteg 1: Verktyg och material Material3 fem gallon hinkar med locken rullande containernågra skruvar och muttrarett plaströren...

Sortera din öre burken

för de flesta banker, tjänat din öre burken är något de gör endast motvilligt. Du måste manuellt sortera mynten in enstaka valörer. Du måste manuellt väska dem till exakta kvantiteter. Trots att de har skalar högteknologiskt industrin-precision, för...

Snabb & lätt Chili!

Letar du efter en awesome tailgate grub som är både billigt och gott?! Detta Super-enkel, super snabba sätt att chili det säker att behaga hela skaran!Den andra dagen på jobbet, en kollega frågade mig om hur man gör chili och, ja, som verkligen sätta...

Ställ in din kamera att automatiskt överföra bilder till datorn, sortera efter datum och mer! (Windows XP)

Överföra bilder till datorn, sortera efter datum, ta bort bilder från kameran efter överföringen, och automatticaly köra program automatisktKom ihåg, om du gillar detta Instructable, kom ihåg att ge det en postive betyg!Jag använder alltid detta för...

DIY telefon kontrollerade FPV Rover (snabb & Agile)

Låt oss bygga en Bluetooth / WiFi kontrollerade FPV Drone! RoverBot är en mycket pedagogisk Arduino ATV-drone. Det är enkelt att göra, lätt att program och är en stor förrätt projekt för hobby! Bot är mycket snabb och smidig, för att inte nämna det b...

Snabb och lätt själ Fries

min dotter Jazzy älskar pommes frites! Men inte bara några franska fries; Du kan alltid säga som hon inte gillar av högen av ketchup på sin tallrik. Under åren jag har provat många metoder för att göra en perfekt franska fry och jag har fått riktigt...

Kylskåpet Pickles - snabb n' Easy

lätt inlagda gurkor. Ett bra mellanmål som innebär ingen matlagning och endast 2 dagar i kylen till säsongen. Smak variationerna är oändliga. Jag gillar dem eftersom de är snabba, lärt smaka gott och min dotter mig hur man gör dem :)Allt du behöver ä...

Super snabb miso, pak choi och nötkött Nudel soppa

ett recept på en av mina favorit saker - nudelsoppa!!! Jag ihåg inte vilket land det kommer från eller vilka aromer är i det; och om det har som min Grans polska kyckling nudelsoppa eller en kryddig asiatisk påverkat buljong - så länge nudlar är inbl...

Hur snabb brand mod 360 controler för 3 dollar

okej, jag vet att det är en stor smärta i röven för att behöva gå ut och köpa några dumma chip till snabb brand mod din controler. Det tar tid att fartyget och är dyrt och komplicerat men jag kommer att visa dig hur man gör det utan chip. Disclamer:...

3 snabba och enkla recept (del tre)

Detta är det senaste receptet i denna serie. Onekligen, detta är egentligen inte en måltid per-säga, är mycket snabb och enkel men den använder också bara 3 ingredienser. Denna gång: jordgubbsglass. De återstående två recept finns på min profil, elle...

Äppelpaj med Pizza - snabb att göra och smakar bra

detta är en snabb liten recept som kommer att tillfredsställa alla, ung eller gammal. När du har allt redo det egentligen bara tar så länge matlagning en pizza, så det är bra för de oväntade besök.Det finns två sätt att göra detta, antingen riktigt s...

1 minut snabb popkonst effekt [snabbaste och enklaste!]

Välkommen till min andra snabb Photoshop tips!Vad är "Che Guevara" effekten?Che Guevara är en ritade effekt av ett foto. (det är vad jag vet bara, jag tror det kan kallas "Siluett" effekt)Varför ska jag använda en "Che Guevara&quo...

Skapa din egen hemsida | Gratis, rolig, snabb och enkel

I detta instructable, du lära dig att skapa din egen hemsida med hjälp av en gratis, snabb och lätt att använda builder.Steg 1: Skapa en Wix.com kontoGå till Wix.com och klicka på logga in. Klicka på "Jag är en ny användare". Skriv ett mail och...