MergeSort Example Initial Commit
This commit is contained in:
parent
a7eaa4cfc6
commit
ad83fc3aff
60
jsort.cpp
Normal file
60
jsort.cpp
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#include "jade.h"
|
||||||
|
|
||||||
|
|
||||||
|
FUNCTION STRARRAY merge (STRARRAY str1, STRARRAY str2) BEGIN
|
||||||
|
DIM STRARRAY result;
|
||||||
|
DIM AS INTEGER leftIndex=0, rightIndex=0;
|
||||||
|
|
||||||
|
WHILE ( (leftIndex < LEN(str1)) AND (rightIndex < LEN(str2)) ) DO
|
||||||
|
IF (str1[leftIndex] <= str2[rightIndex]) THEN
|
||||||
|
result.push_back(str1[leftIndex]);
|
||||||
|
++leftIndex;
|
||||||
|
ELSE
|
||||||
|
result.push_back(str2[rightIndex]);
|
||||||
|
++rightIndex;
|
||||||
|
ENDIF
|
||||||
|
WEND
|
||||||
|
|
||||||
|
IF (leftIndex < LEN(str1)) THEN
|
||||||
|
result.push_back(str1[leftIndex]);
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF (rightIndex < LEN(str2)) THEN
|
||||||
|
result.push_back(str2[rightIndex]);
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
RETURN result;
|
||||||
|
ENDFUNCTION
|
||||||
|
|
||||||
|
|
||||||
|
FUNCTION STRARRAY merge_sort(STRARRAY m) DO
|
||||||
|
DIM INTEGER middle;
|
||||||
|
|
||||||
|
IF (LEN(m) <= 1) RETURN m;
|
||||||
|
|
||||||
|
middle = LEN(m) / 2;
|
||||||
|
|
||||||
|
DIM STRARRAY left(m.begin(), m.begin() + middle);
|
||||||
|
DIM STRARRAY right(m.begin() + middle, m.end());
|
||||||
|
|
||||||
|
left = merge_sort(left);
|
||||||
|
right = merge_sort(right);
|
||||||
|
RETURN merge(left, right);
|
||||||
|
ENDFUNCTION
|
||||||
|
|
||||||
|
MAIN
|
||||||
|
DIM AS CSTRING Bible;
|
||||||
|
DIM AS STRARRAY Array, Result;
|
||||||
|
DIM AS INTEGER CNT;
|
||||||
|
|
||||||
|
// Bible = LOADFILE$("bible.txt");
|
||||||
|
// Array = SPLIT(Bible,"\n");
|
||||||
|
Array = SPLIT("pear,cranberry,orange,apple,carrot,banana,grape,peaches,tangerines",",");
|
||||||
|
Result = merge_sort(Array);
|
||||||
|
FOR (CNT = 0 TO CNT < LEN(Result) STEP ++CNT) DO
|
||||||
|
PRINT (Result[CNT]);
|
||||||
|
NEXT
|
||||||
|
|
||||||
|
std::cout << Result.size() << std::endl;
|
||||||
|
ENDMAIN
|
||||||
|
|
Loading…
Reference in New Issue
Block a user