Sök…


Anmärkningar

Introduktion till algoritmer

Algoritmer är allmänt tillgängliga inom datavetenskap och programvaruteknik. Val av lämpliga algoritmer och datastrukturer förbättrar vår programeffektivitet i kostnader och tid.

Vad är en algoritm? Informellt är en algoritm en procedur för att utföra en specifik uppgift. [Skiena: 2008: ADM: 1410219] Specifikt är en algoritm en väldefinierad beräkningsprocedur, som tar ett värde (eller uppsättning av värden) som input och producerar ett värde eller en uppsättning värden som utgång . En algoritm är alltså en sekvens av beräkningssteg som omvandlar ingången till utgången. Cormen et. al. noterar inte uttryckligen att en algoritm inte nödvändigtvis kräver inmatning. [Cormen: 2001: IA: 580.470]

Formellt måste en algoritm uppfylla fem funktioner: [Knuth: 1997: ACP: 260999]

  1. Finhet . En algoritm måste alltid avslutas efter ett begränsat antal steg.
  2. Definitivitet . Varje steg i en algoritm måste definieras exakt; de åtgärder som ska utföras måste specificeras noggrant. Det är denna kvalitet som [Cormen: 2001: IA: 580470] hänvisar till med termen "väldefinierad".
  3. Inmatning . En algoritm har noll eller fler ingångar . Det här är mängder som ges till algoritmen inledningsvis innan den börjar eller dynamiskt när den körs.
  4. Utgång . En algoritm har en eller flera utgångar . Det här är mängder som har en specifik relation till ingångarna. Vi förväntar oss att en algoritm producerar samma utgång när den ges samma input om och om igen.
  5. Effektivitet . En algoritm förväntas också i allmänhet vara effektiv . Verksamheten måste vara tillräckligt grundläggande så att de kan utföras exakt i princip och i en begränsad tid av någon som använder penna och papper.

En procedur som saknar slutlighet men som uppfyller alla andra egenskaper hos en algoritm kan kallas en beräkningsmetod . [Knuth: 1997: ACP: 260.999]

Ett exempel på algoritmiska problem

Ett algoritmiskt problem specificeras genom att beskriva den kompletta uppsättningen instanser som den måste arbeta på och dess utgång efter att ha kört på ett av dessa instanser. Denna skillnad, mellan ett problem och ett exempel på ett problem, är grundläggande. Det algoritmiska problemet som kallas sortering definieras enligt följande: [Skiena: 2008: ADM: 1410219]

  • Problem: Sortering
  • Input: En sekvens av n- tangenter, a_1, a_2, ..., a_n .
  • Output: Omordningen av ingångssekvensen så att a'_1 <= a'_2 <= ... <= a'_{n-1} <= a'_n

Ett exempel på sortering kan vara en rad strängar, såsom { Haskell, Emacs } eller en sekvens av siffror som { 154, 245, 1337 } .

Komma igång med Simple Fizz Buzz Algoritm i Swift

För dig som är ny med att programmera i Swift och de som kommer från olika programmeringsbaser, som Python eller Java, borde den här artikeln vara till stor hjälp. I det här inlägget kommer vi att diskutera en enkel lösning för att implementera snabba algoritmer.

Fizz Buzz

Du kanske har sett Fizz Buzz skrivet som Fizz Buzz, FizzBuzz eller Fizz-Buzz; de hänvisar alla till samma sak. Den "saken" är det viktigaste diskussionsämnet idag. Först, vad är FizzBuzz?

Detta är en vanlig fråga som kommer upp i jobbintervjuer.

Föreställ dig en serie med ett nummer från 1 till 10.

1 2 3 4 5 6 7 8 9 10

Fizz och Buzz hänvisar till valfritt antal som är en multipel av 3 respektive 5. Med andra ord, om ett nummer kan delas med 3, ersätts det med fizz; om ett tal är delbart med 5 ersätts det med surr. Om ett nummer samtidigt är en multipel av 3 OCH 5 ersätts numret med "fizz-surr." I huvudsak emulerar det det berömda barnspelet "fizz buzz".

För att arbeta med detta problem öppnar du Xcode för att skapa en ny lekplats och initiera en matris som nedan:

// for example 
let number  = [1,2,3,4,5]
// here 3 is fizz and 5 is buzz

För att hitta allt fizz och surr måste vi iterera genom matrisen och kontrollera vilka nummer som är fizz och vilka surr. För att göra detta, skapa en for loop för att iterera genom den matris som vi har initialiserat:

for num in number {
  // Body and calculation goes here
}

Efter detta kan vi helt enkelt använda "if else" -tillståndet och moduloperatören i snabba, dvs -% för att hitta fizz och surr

for num in number {
  if num % 3 == 0 {
    print("\(num) fizz")
  } else {
    print(num)
  }
}

Bra! Du kan gå till felsökningskonsolen i Xcode-lekplatsen för att se utgången. Du kommer att upptäcka att "fizzes" har sorterats ut i din matris.

För Buzz-delen kommer vi att använda samma teknik. Låt oss försöka innan du bläddrar igenom artikeln - du kan kontrollera dina resultat mot den här artikeln när du är klar med detta.

for num in number {
  if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

Kontrollera utgången!

Det är ganska rakt fram - du delade antalet med 3, fizz och delade antalet med 5, surr. Öka nu antalet i matrisen

let number = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

Vi ökade antalet från 1-10 till 1-15 för att demonstrera begreppet "fizz-surr." Eftersom 15 är en multipel av både 3 och 5, bör numret ersättas med "fizz-surr." Försök själv och kolla svaret!

Här är lösningen:

for num in number {
  if num % 3 == 0 && num % 5 == 0 {
    print("\(num) fizz buzz")
  } else if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

Vänta ... det är dock inte slut! Hela syftet med algoritmen är att anpassa körtiden korrekt. Föreställ dig om intervallet ökar från 1-15 till 1-100. Kompilatorn kommer att kontrollera varje nummer för att bestämma om det är delbart med 3 eller 5. Den körs sedan igenom siffrorna igen för att kontrollera om siffrorna är delbara med 3 och 5. Koden måste i huvudsak köras genom varje nummer i matrisen två gånger - det skulle behöva köra siffrorna med 3 först och sedan köra det med 5. För att påskynda processen kan vi helt enkelt säga vår kod för att dela siffrorna med 15 direkt.

Här är den sista koden:

for num in number {
  if num % 15 == 0 {
    print("\(num) fizz buzz")
  } else if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

Så enkelt som det kan du använda valfritt språk och komma igång

Njut av kodning



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow