Video: Sofijah - Varför 2024
Föreställ dig att du försöker hitta en vara i en lista utan att sortera den först. Varje sökning blir en tidskrävande sekventiell sökning. Men ett fall kan göras för att inte sortera data för algoritmer. Trots allt är data fortfarande tillgängliga, även om du inte sorterar det - och sortering tar tid.
Problemet med osorterade data är naturligtvis samma problem som skräpslådan i ditt kök (eller var du än har skräpslådan - förutsatt att du kan hitta den). Att leta efter någonting i skräplådan är tidskrävande eftersom du inte ens kan börja gissa var du ska hitta något. Snarare än att bara nå in och ta vad du vill, måste du ta bort många andra saker som du inte vill ha för att hitta det enda objektet du behöver. Tyvärr kan det föremål som du behöver inte vara i skräpslådan i första hand - du kan ha kastat det ut eller sätta det i en annan låda.
Skräplådan i ditt hem är precis som osorterad data på ditt system. När uppgifterna är usorterade måste du söka ett objekt i taget, och du vet inte ens om du hittar vad du behöver utan att söka varje objekt i datasetet först. Det är ett frustrerande sätt att arbeta med data.
Självklart räcker det inte med att helt enkelt sortera data. Om du har en anställd databas sorterad efter efternamn, men behöver se upp en anställd vid födelsedatum, är sorteringen inte användbar. (Säg att du vill hitta alla anställda som har en födelsedag på en viss dag.) För att hitta det födelsedatum du behöver, måste du fortfarande söka hela datasetet ett objekt i taget. Följaktligen måste sortering fokusera på ett visst behov. Ja, du behövde personaldatabasen sorterad efter avdelning vid en tidpunkt och efter efternamn vid en annan tid, men nu behöver du det sorterat efter födelsedatum för att kunna använda datasetet effektivt.
Behovet av att behålla flera sorterade order för samma data är anledningen till att utvecklare skapat index. Att sortera ett litet index är snabbare än att sortera hela datasetet. Indexet behåller en specifik datordisk och pekar på hela databasen så att du kan hitta vad du behöver extremt snabbt. Genom att behålla ett index för varje sorteringsbehov kan du effektivt minska dataåtkomsttiden och låta flera personer komma åt data samtidigt i den ordning de behöver komma åt.
Många sätt är tillgängliga för att kategorisera sorteringsalgoritmer. Ett av dessa sätt är sortens hastighet. När man överväger hur effektiv en viss sortalgoritm är vid att ordna data, ser tidstagsbänkarna normalt på två faktorer:
- Jämförelser: För att flytta data från en plats i en dataset till en annan, behöver du veta vart du ska flytta den, vilket innebär att man jämför måldata med andra data i datasetet.Att ha färre jämförelser betyder bättre prestanda.
- Utbyten: Beroende på hur du skriver en algoritm, kommer data kanske inte till sin slutliga plats i datamängden vid första försöket. Data kan faktiskt flytta flera gånger. Antalet utbyten påverkar hastigheten väsentligt eftersom nu flyttar du faktiskt data från en plats till en annan i minnet. Färre och mindre utbyten (som vid användning av index) betyder bättre prestanda.