Sortieren von Vektorelementen < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 18:16 Di 06.06.2006 | Autor: | joma |
Aufgabe | Aufgabe: Ein unsortierter Vektor soll mit Hilfe von Matlab der größe nach sortiert werden und zwar folgendermaßen: die ersten k elemente sind sortiert. Dann sollen k+1 elemente angeschaut werden. falls dieses element kleiner ist sollen die plätze der elemente so getauscht werden, dass die ersten k+1 elemente der Größe nach sortiert sind usw. |
Mein Problem ist, dass ich es nicht hinbekomme, die Elemente des Vektors zu tauschen. Gibt es hierfür einen "Switch"-Befehl oder etwas ähnliches??
DANKE
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 18:55 Di 06.06.2006 | Autor: | dormant |
Hi!
Es ist durchaus möglich, dass es so einen Befehl gibt, der heißt aber bestimmt nicht switch und macht nichts Anderes als das hier:
b=v(k);
v(k)=v(m);
v(m)=b;
Dabei werden das k-te mit dem m-ten Element des Vektors v vertauscht. Dabei benutzt man eine Hilfsvariable b, die eine 1x1 Matrix ist.
Gruß,
dormant
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 19:15 Di 06.06.2006 | Autor: | joma |
Hallo dormant!
leider weiß ich nicht, wie ich m definieren soll damit das Programm läuft.
Ausserdem weiß ich nicht, wie ich den sortierten Vektor dann ausgeben kann.
Danke für deine Hilfe,
joma
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:25 Di 06.06.2006 | Autor: | dormant |
Hi!
Wie man m und k und wie man die Schleife genau definiert ist Sinn und Zweck der Aufgabe.
Wenn die ersten k Elemente sortiert sind, muss man die Stelle vom k+1 ten Element bestimmen:
for j=1:length(v)-1
k=j;
while v(k+1)<v(k)
b=v(k);
v(k)=v(k+1);
v(k+1)=b;
if k==1 break; end
k=k-1;
end
end
v % Ausgabe v
Den Code habe ich nicht getestet, aber müsste so stimmen. Davor musst du sicherstellen, dass v(1) das kleinste Element ist. Das überlasse ich dir und geb dir dabei ein Tipp:
help min
Gruß,
dormant
|
|
|
|