Преглед изворни кода

small optimization of InsertSort()

git-svn-id: https://svn-dept.inf.ethz.ch/svn/lecturers/a2/trunk@8736 8c9fc860-2736-0410-a75d-ab315db34111
infsvn.guenter пре 6 година
родитељ
комит
708c84a430
2 измењених фајлова са 10 додато и 10 уклоњено
  1. 5 5
      source/BorrowsWheeler.Mod
  2. 5 5
      source/SortDemo.Mod

+ 5 - 5
source/BorrowsWheeler.Mod

@@ -91,16 +91,16 @@ TYPE
 			END Swap;
 
 			PROCEDURE InsertSort( lo, hi: Index );
-			VAR x, i, l, h, m, ip, tmp: Index;
+			VAR x, i, l, m, ip, tmp: Index;
 			BEGIN
 				x := lo + 1;
 				WHILE x <= hi DO
 					IF Less( x, x - 1 )  THEN
 						(* find insert position ip *)
-						ip := x - 1;  l := lo;  h := ip - 1;
-						WHILE l <= h DO
-							m := (l + h) DIV 2;
-							IF Less( x, m ) THEN  ip := m;  h := m - 1  ELSE  l := m + 1  END
+						ip := x - 1;  l := lo; 
+						WHILE l < ip DO
+							m := (l + ip) DIV 2;
+							IF Less( x, m ) THEN  ip := m  ELSE  l := m + 1  END
 						END;
 						(* insert rotation[x] at position ip*)
 						tmp := rotation[x];  i := x;

+ 5 - 5
source/SortDemo.Mod

@@ -319,17 +319,17 @@ TYPE
 
 		PROCEDURE InsertSort( lo, hi: Index );
 		VAR
-			x, l, h, m, ip, i: Index;
+			x, l, m, ip, i: Index;
 			tmp: ElementType;
 		BEGIN
 			x := lo + 1;
 			WHILE x <= hi DO
 				IF Less( x, x - 1 )THEN
 					(* find insert position ip, binary search *)
-					ip := x - 1;  l := lo;  h := ip - 1;
-					WHILE l <= h DO
-						m := (l + h) DIV 2;
-						IF Less( x, m ) THEN  ip := m;  h := m - 1  ELSE  l := m + 1  END
+					ip := x - 1;  l := lo; 
+					WHILE l < ip DO
+						m := (l + ip) DIV 2;
+						IF Less( x, m ) THEN  ip := m  ELSE  l := m + 1  END
 					END;
 					(* insert data[x] at position ip *)
 					tmp := data[x];  i := x;