Sortieren eines Vektors ohne sort() zu nutzen

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
Bimi1728

Sortieren eines Vektors ohne sort() zu nutzen

Beitrag von Bimi1728 »

Hallo liebe Leute,

Folgende Aufgabenstellung:

Write a program to merge two sorted vectors into a single sorted vector.
Do not use the sort(x) function, and try to make your program as e cient as possible. That is, try to minimise the number of operations required to merge the vectors.

Leider komme ich hier überhaupt nicht weiter, ich weiss nicht ganz ob ich eine for Schleife mit einer If Bedingung nutzen soll.
Ich wäre euch für jeden kleinen Tipp dankbar.

Liebe Grüße
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Sortieren eines Vektors ohne sort() zu nutzen

Beitrag von jogo »

Hallo Bimi1728,

willkommen im Forum. Mit so einer Aufgabe ist man eigentlich an einer Stelle, an der man noch kaum mit R zu tun hat, denn man muss erstmal einen Plan entwickeln (Fachleute sagen dazu auch Algorithmus).
Hier mal zwei Ideen (jede führt zu einem anderen Algorithmus):
I Man laufe quasi parallel durch beide Vektoren und schreibt das kleinere Element jeweils in einen neuen Vektor.
II Dürft ihr die Funktionen rank() oder order() benutzen ... oder das Paket data.table ? ;)

Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Sortieren eines Vektors ohne sort() zu nutzen

Beitrag von bigben »

Hallo,

die Threadüberschrift ist falsch, denn hier muss nichts sortiert werden. rank() und order() braucht man nicht. Die beiden Ausgangsvektoren sind laut Aufgabenstellung schon sortiert. Man muss also beim ersten Wert in beiden Vektoren (nennen wir sie a und b) an der ersten Stellen schauen, welches der kleinere Wert ist. Den nimmt man, dann schaut man in beiden Vektoren, welcher an der ersten noch nicht weggenommenen Stelle den kleineren Wert hat und nimmt den und das ganze solange, bis beide Vektoren aufgebraucht sind. Kann man sich ein bisschen wie einen Reißverschluss vorstellen.
Man kann das zum Beispiel in einer for-Schleife machen, die von 1 bis zur Summe der Längen beider Vektoren läuft. In der Schleife muss man sich dann zwei Zeiger, nennen wir sie zeiger_a und zeiger_b machen, die jeweils anzeigen, welches das nächste zur Wahl stehende Element des jeweils zugehörigen Vektors ist, so dass man immer a[zeiger_a] und b[zeiger_b] miteinander vergleichen kann.

@Bimi: Du musst uns sagen, ob Du das so umsetzen kannst, nachdem die Machbarkeit mit for und if jetzt bestätigt ist. Wenn nein, dann schreib präzise,wo es hakt. Einfach die Aufgabe für Dich beantworten werden wir nicht. Helfen gerne.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Bimi1728

Re: Sortieren eines Vektors ohne sort() zu nutzen

Beitrag von Bimi1728 »

Lieber Jörg,
Lieber Bernhard,

Danke euch, Ich glaub ich habe es jetzt,

LG
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Sortieren eines Vektors ohne sort() zu nutzen

Beitrag von bigben »

Hallo Bimi,

poste ruhig, was Du jetzt hast. Vielleicht haben wir ja noch einen hilfreichen Kommentar.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten