Scripting:BubbleSort
Aus STNE-Wiki
K (→Der Algorythmus) |
K |
||
(Der Versionsvergleich bezieht 8 dazwischenliegende Versionen mit ein.) | |||
Zeile 1: | Zeile 1: | ||
+ | {{Scriptingmenue}} | ||
+ | |||
=Der BubbleSort= | =Der BubbleSort= | ||
- | Er wird verwendet um Arrays aus Zahlen effizent zu sortieren. | + | Er wird verwendet um Arrays aus Zahlen effizent zu sortieren, beispielsweise um danach einen [[Scripting:BinarySearch|BinarySearch]] aufzurufen. |
Im Gegensatz zum einfachen Sort muß er nicht immer der gesammte Array durchgehen um die geeignete Position für die gegebene Zahl zu finden, weshalb sich die Verarbeitungsgeschwindigkeit eklatant verbessert wird. Durch diese Sortierweise können auch lange Arrays mit extrem geringem Zeit und Ressourcenaufwand geordnet werden. | Im Gegensatz zum einfachen Sort muß er nicht immer der gesammte Array durchgehen um die geeignete Position für die gegebene Zahl zu finden, weshalb sich die Verarbeitungsgeschwindigkeit eklatant verbessert wird. Durch diese Sortierweise können auch lange Arrays mit extrem geringem Zeit und Ressourcenaufwand geordnet werden. | ||
- | + | <br><br> | |
- | + | <b><font color="#FF0000">ACHTUNG!!!</font></b> Diese Funktion ist mit <u><b>array.sort()</b></u> und <u><b>array.reverse()</b></u> unnötig geworden! Bitte den Algorythmus wegen Performancegründen <b><font color="#FF0000">NICHT</font></b> auf Dauer nutzen und <b><u>nur für Lehrzwecke</u></b> einsetzten! | |
+ | <br><br> | ||
+ | Der Array ist so geschrieben, dass er nicht kopiert werden muß, sondern lediglich ein Speicherverweis dazu hergestellt wird.<br> | ||
+ | Das Array, welches als Quelle dient, wird dabei verändert. | ||
==Der Algorythmus== | ==Der Algorythmus== | ||
Zeile 10: | Zeile 15: | ||
Der ganze Algorythmus ist als Methode verwirklicht worden. Dies ermöglicht die unveränderte übernahme des Quellcodes, siehe unten. | Der ganze Algorythmus ist als Methode verwirklicht worden. Dies ermöglicht die unveränderte übernahme des Quellcodes, siehe unten. | ||
- | + | function BubbleSort (a as array){ | |
- | + | var i as integer=0; | |
- | + | var tmp as integer; | |
- | + | var lenght as integer = a.Length; | |
- | + | While (++i<lenght){ | |
- | + | if (a[i-1]>a[i]){ | |
- | + | tmp=a[i-1]; | |
- | + | a[i-1]=a[i]; | |
- | + | a[i]=tmp; | |
- | + | i=i-2; | |
- | + | } | |
- | + | if(i<0){i=0} | |
} | } | ||
+ | } | ||
==Der ultimative Test== | ==Der ultimative Test== | ||
Zeile 28: | Zeile 34: | ||
Um den Sort zu testen, könnt ihr beispielsweise folgendes schreiben: | Um den Sort zu testen, könnt ihr beispielsweise folgendes schreiben: | ||
- | + | var arr[] as integer = { 15, 2, 19, 8, 20, 8, 29, 4 }; | |
- | + | WriteLine(' '); | |
- | + | WriteLine('Array vor der Sortierung:'); | |
- | + | WriteLine(arr[0] & ' ' & arr[1] & ' ' & arr[2] & ' ' & arr[3] & ' ' & arr[4] & ' ' & arr[5] & ' ' & arr[6] & ' ' & arr[7]); | |
- | + | BubbleSort(arr); | |
- | + | WriteLine(' '); | |
- | + | WriteLine('Array nach der Sortierung:'); | |
- | + | WriteLine(arr[0] & ' ' & arr[1] & ' ' & arr[2] & ' ' & arr[3] & ' ' & arr[4] & ' ' & arr[5] & ' ' & arr[6] & ' ' & arr[7]); | |
- | + | WriteLine(' '); | |
- | + | ||
==Der Erfolg== | ==Der Erfolg== | ||
Zeile 54: | Zeile 59: | ||
MFG Proximo | MFG Proximo | ||
+ | |||
+ | [[Kategorie:Methoden|BubbleSort]] |
Aktuelle Version vom 20. Mai 2006, 07:05 Uhr
fertige Scripte | Anleitungen und FAQ | Überblick über die Scripting-Sektion | Hilfen zum Arbeiten im Wiki |
Inhaltsverzeichnis |
Der BubbleSort
Er wird verwendet um Arrays aus Zahlen effizent zu sortieren, beispielsweise um danach einen BinarySearch aufzurufen.
Im Gegensatz zum einfachen Sort muß er nicht immer der gesammte Array durchgehen um die geeignete Position für die gegebene Zahl zu finden, weshalb sich die Verarbeitungsgeschwindigkeit eklatant verbessert wird. Durch diese Sortierweise können auch lange Arrays mit extrem geringem Zeit und Ressourcenaufwand geordnet werden.
ACHTUNG!!! Diese Funktion ist mit array.sort() und array.reverse() unnötig geworden! Bitte den Algorythmus wegen Performancegründen NICHT auf Dauer nutzen und nur für Lehrzwecke einsetzten!
Der Array ist so geschrieben, dass er nicht kopiert werden muß, sondern lediglich ein Speicherverweis dazu hergestellt wird.
Das Array, welches als Quelle dient, wird dabei verändert.
Der Algorythmus
Der ganze Algorythmus ist als Methode verwirklicht worden. Dies ermöglicht die unveränderte übernahme des Quellcodes, siehe unten.
function BubbleSort (a as array){ var i as integer=0; var tmp as integer; var lenght as integer = a.Length; While (++i<lenght){ if (a[i-1]>a[i]){ tmp=a[i-1]; a[i-1]=a[i]; a[i]=tmp; i=i-2; } if(i<0){i=0} } }
Der ultimative Test
Um den Sort zu testen, könnt ihr beispielsweise folgendes schreiben:
var arr[] as integer = { 15, 2, 19, 8, 20, 8, 29, 4 }; WriteLine(' '); WriteLine('Array vor der Sortierung:'); WriteLine(arr[0] & ' ' & arr[1] & ' ' & arr[2] & ' ' & arr[3] & ' ' & arr[4] & ' ' & arr[5] & ' ' & arr[6] & ' ' & arr[7]); BubbleSort(arr); WriteLine(' '); WriteLine('Array nach der Sortierung:'); WriteLine(arr[0] & ' ' & arr[1] & ' ' & arr[2] & ' ' & arr[3] & ' ' & arr[4] & ' ' & arr[5] & ' ' & arr[6] & ' ' & arr[7]); WriteLine(' ');
Der Erfolg
Script gestartet. Array vor der Sortierung: 15 2 19 8 20 8 29 4 Array nach der Sortierung: 2 4 8 8 15 19 20 29 Script beendet.
Viel Spaß mit BubbleSort!
MFG Proximo