Java programmering, hjälp angående ett antal uppgifter!

Medlem
Java programmering, hjälp angående ett antal uppgifter!

Hej! Jag har ett antal uppgifter som jag har problem med att lösa, skulle verkligen uppskatta om någon kunde hjälpa mig!

1. Sökning
a) Kan man använda tekniken sekventiell sökning för att hitta ett tal i ett osorterat fält?

b) Försök att kortfattat förklara varför det oftast går snabbare att hitta ett värde i ett fält med
tekniken binärsökning än med tekniken sekventiell sökning.

2. Ajaj!
Örjan var lite för snabb på tangentbordet när han kodade sin metod för infogande sortering.
Koden går att kompilera MEN hans indata verkar förändra sig när han kör metoden.
Dvs skickar han in i ett fält med talen : 7 3 9 15 2 8 4
Så får han INTE ut : 2 3 4 7 8 9 15
Utan istället får han ut : 1 7 2 4 3 6 5

Hitta vilken rad (bara EN) som har felet i Örjans infSort-metod och föreslå en lösning!

Här är källkoden till Örjans infSort-metod (radnummer längst till vänster):

1. public void infSort ( int [ ] data)
{
for ( int m =1; m < data.length; m++)
{
int pos = m;
int tmp = data [ m ] ;
while ( pos > 0 && data [ pos - 1 ] > tmp )
{
data [ pos ] = data [ pos - 1 ] ;
pos--;
}
data [ pos ] = m;
}
}

6. Skriv en metod som kan fylla ett fält med heltal som läses in från tangentbordet.
Metoden skall fråga användaren efter precis lika många heltal som fältet är stort, varken mer
eller mindre, oavsett hur stor fältet är. Slutligen skall metoden returnera summan av alla

Metodhuvudet skall se ut på följande vis:

public int fillArray ( int [ ] data)

57 61 72 6e 69 6e 67 20 66 6f 72 20 6e 65 72 64

1.
a) Är enkelt att hitta på nätet. Andra resultatet i google: http://www.users.abo.fi/lgrandel/proggk07/forel14/F14_271107....

b)Ta ett antal värden cirka 10 - 20 st välj ett värde och sök sedan efter det med sekventiell sökning. Ta sedan sök efter samma värde på ett binärt sätt. Ta och räkna hu många steg du behövde göra på båda så får du fram svaret. Ta och försök med några olika värden.

2. Ta och skriv en egen metod som funkar och jämför den sedan men den felaktiga.

6.
1. Du har en array men storleken n.
2. Du ska be användaren skriva in n st heltal.
3. Du ska returnera summan av alla de inmatade talen.


signatur

59 6f 75 20 72 65 61 6c 6c 79 20 6e 65 65 64 20 74 6f 20 67 65 74 20 61 20 6c 69 66 65 20 69 6e 73 74 65 61 64 20 6f 66 20 74 72 79 69 6e 67 20 74 6f 20 64 65 63 6f 64 65 20 72 61 6e 64 6f 6d 20 73 74 72 65 61 6d 20 6f 66 20 62 79 74 65 73 2e
https://mastodon.social/@olofhaglund

Medlem
Skrivet av Simon11:

b) Försök att kortfattat förklara varför det oftast går snabbare att hitta ett värde i ett fält med
tekniken binärsökning än med tekniken sekventiell sökning.

Det går inte att säga att det "oftast" går snabbare. Det beror nämligen helt på vilket dataset som du jobbar på.
Jag antar att du pratar om binärträd om inte så lär du dig något nytt nu:

Binärträdssökningar fungerar bättre på data som till största delen är osorterad. Hela idén med den är att varje gren automatiskt sorterar bort minst 50% av datan. Detta förklarar också varför en till största delen sorterad data är mindre lämpad för denna metoden. Om datan är till största delen sorterad så blir effekten mindre eftersom värdena ligger närmare varandra. Det kan t o m bli så att en vanlig bubblesort fungerar bättre trots att binärträdssortering är elegantare.

Edit: Jag måste lägga till att det handlar om balanserat binärträd och obalanserat binärträd.
Balanserat är när datan är till största delen slumpmässig och obalanserat när det är mer sekvensiellt.

Edit 2: Jag insåg nu att jag besvarat din första fråga också.


signatur

I came here to ruin your day. God sent me.

Medlem
Skrivet av joffjoff:

1.
a) Är enkelt att hitta på nätet. Andra resultatet i google: http://www.users.abo.fi/lgrandel/proggk07/forel14/F14_271107....

b)Ta ett antal värden cirka 10 - 20 st välj ett värde och sök sedan efter det med sekventiell sökning. Ta sedan sök efter samma värde på ett binärt sätt. Ta och räkna hu många steg du behövde göra på båda så får du fram svaret. Ta och försök med några olika värden.

2. Ta och skriv en egen metod som funkar och jämför den sedan men den felaktiga.

6.
1. Du har en array men storleken n.
2. Du ska be användaren skriva in n st heltal.
3. Du ska returnera summan av alla de inmatade talen.

Alltså, som jag skrivit ovan så kan du besvara både a och b enkelt genom att förstå hur datasortering påverkar sökningar. Visst, det är bra att empiriskt kunna bevisa att en metod är snabbare än en annan, men i detta fallet är det fel väg att gå eftersom frågorna är ställda för att se om eleven har förstått logiken.

Dina svar besvarar ingenting av det som Simom11 frågade efter.


signatur

I came here to ruin your day. God sent me.

57 61 72 6e 69 6e 67 20 66 6f 72 20 6e 65 72 64

För binärsökning krävs det att mängden är sorterad.

Anledningen är varför jag inte skrev mer specifikt är för att jag inte vill göra någons läxa åt dem. Utan jag vill bara ge små ledtrådar. Man blir inte bättre på att be någon annan att lösa dem.

Samt uppgift a och b så finns svaret i klartext på slide 4 och 6 i pdf jag länkade.


signatur

59 6f 75 20 72 65 61 6c 6c 79 20 6e 65 65 64 20 74 6f 20 67 65 74 20 61 20 6c 69 66 65 20 69 6e 73 74 65 61 64 20 6f 66 20 74 72 79 69 6e 67 20 74 6f 20 64 65 63 6f 64 65 20 72 61 6e 64 6f 6d 20 73 74 72 65 61 6d 20 6f 66 20 62 79 74 65 73 2e
https://mastodon.social/@olofhaglund

Medlem
Skrivet av joffjoff:

För binärsökning krävs det att mängden är sorterad.

Anledningen är varför jag inte skrev mer specifikt är för att jag inte vill göra någons läxa åt dem. Utan jag vill bara ge små ledtrådar. Man blir inte bättre på att be någon annan att lösa dem.

Samt uppgift a och b så finns svaret i klartext på slide 4 och 6 i pdf jag länkade.

Det KRÄVS inte att datasetet är sorterat, däremot blir det inte optimalt. Det är en skillnad.

På B håller jag med dig på alla punkter.


signatur

I came here to ruin your day. God sent me.

1
Skriv svar