pl/sql-bubble-sort
okay, ich bin, schlagen mich bis über diese. Ich bin zum laden brauchen eine Reihe in der Menschen, die letzten Namen in einer Tabelle gespeichert. Dann Sortieren Sie die Nachnamen und drucken Sie diese in alphabetischer Reihenfolge. Dies muss getan werden mit der bubble-sort-Algorithmus.
hier ist was ich bisher
CREATE OR REPLACE PROCEDURE TEAM_TABLE_SORT AS
TYPE player_Name_type IS TABLE OF databasename.team.player%type
INDEX BY PLS_INTEGER ;
player_name player_Name_type;
i integer := 1;
temp integer;
BEGIN
FOR player_names IN (SELECT * FROM marshall.team )
LOOP
player_name(i) := player_names.player;
DBMS_OUTPUT.PUT_LINE(i|| ' - ' ||chr(9) || player_name(i) ) ;
i := i + 1 ;
END LOOP
All dies wirklich bedeutet ist, drucken Sie die Namen. Ich kann es nicht Sortieren. Ich bin nicht versuchen, etwas auf diese
TYPE player_Name_type IS TABLE OF %type INDEX BY varchar2(20) ;
aux player_Name_type;
i integer := 1;
v_current is table of aux
swapped BOOLEAN := TRUE;
BEGIN
FOR aux IN (SELECT * FROM )
LOOP
DBMS_OUTPUT.PUT_LINE(i|| ' - ' ||chr(9) || aux.player);
i := i + 1 ;
END LOOP;
v_current := aux.first;
WHILE(swapped)
LOOP
swapped := FALSE;
FOR I IN 1..(aux.count-2) LOOP
IF aux(i) > aux(I+1) THEN
v_current := aux(i+1);
aux(I+1) := aux(i);
aux(i) := v_current;
END IF;
swapped := TRUE;
END LOOP;
END LOOP;
FOR aux IN (SELECT * FROM LOOP
DBMS_OUTPUT.PUT_LINE(i|| ' - ' ||chr(9) ||aux.player);
i := i + 1 ;
END LOOP;
ORDER BY lastname
=)- Warum müssen Sie verwenden, bubble-sort?
- Dies ist eine sehr schlechte Hausaufgaben Frage - erfordern Sie, um zu implementieren, etwas, was, wenn Sie waren zu versuchen, diese in der realen Welt, Sie wäre sofort "gehen lassen" (oder zumindest geschickt, um re-education camp) 🙂
- "Immer noch nichts!! bitte helfen Sie mir" ist nicht die Art zu Fragen für weitere Hilfe...
- das problem kann sein, dass Ihre "getauscht := TRUE' - Anweisung muss VOR 'END IF', nicht darunter. Verschieben, dass eine Aussage und sehen, ob es hilft.
- Adams, bitte Sag mir, du bist sarkastisch.
- Dies ist eine sehr gute Hausaufgaben Frage. Der Punkt, dass bubblesort in der Zuordnung, damit die Schüler lernen, die feineren Punkte von PL/SQL wie Schleifen und array-manipulation. Ja,
ORDER BY
ist der richtige Weg, dies zu tun im wirklichen Leben, aber das hilft nicht viel, wenn das Ziel ist, sich Kompetenzen in PL/SQL. - Bannister: NÖ. Die Implementierung eines array-Algorithmus ist eine Gelegenheit, um mehr als nur einen kurzen Einblick in die Sprache. Anstatt zum nachschlagen der syntax für das erstellen von Prozeduren, Deklaration von Variablen und Kontrollstrukturen verwenden jedes mal, wenn Sie müssen zum erstellen von Prozeduren, die Schüler sind gezwungen, sich hinzusetzen und tatsächlich lernen, PL/SQL. Mein Kommentar war nicht gut formuliert, so dass ich aktualisiert.
- Kemp "Noch nichts..." war in der ursprünglichen Bearbeiten, ich vermute, der OP bedeutete etwas entlang der Linien von "ich versuchte, funktionierte nicht, ich versuchte B, es funktioniert immer noch nicht...", anstatt ungeduldig mit den mangelnden Antworten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies sollte sein, was du suchst. Beachten Sie, dass es besser ist, um den Typ der Variablen/Sammlungen aus den Tabellen, wie Sie in Ihrem Beispiel. Ich verwendete generische Versionen, da ich nicht Ihre Tabellen haben, mit zu arbeiten. Wenn Sie nicht verstehen, wie dies funktioniert, fühlen Sie sich frei, zu Fragen. Ich vermute, dass dies ist, Hausaufgaben (wer sonst würde bubble-sort in Oracle), so ist der Punkt, der die Abtretung ist für Sie zu verstehen, nicht nur um es richtig zu machen. 🙂
Sie wollen in der Regel verwenden Sie eine ORDER BY in der query-source.
Können Sie einen VARCHAR2-index-Tabelle Sortierung zu tun aber auch.
Das zweite Stück code, die du gepostet hast sieht aus wie eine gültige Implementierung des bubble-sort-Algorithmus. Der Grund erscheint es nicht funktionieren wird, weil der Letzte loop. Statt den Druck aus dem sortierten array Sie sind repopulating es mit zufällig sortierte Daten aus Ihrer Tabelle.
So, nur die Letzte Schleife:
Können Sie auch mit dem Beispiel des Bubble-Sort in PL /SQL auf dieser website:
http://www.oratechinfo.co.uk/oo.html#bubble_sort