Avoid *begin always being included in the sorted list regardless of its value.
authormstembera <MissingEmail@email>
Mon, 8 May 2017 03:14:23 +0000 (20:14 -0700)
committerJoona Kiiski <joona@zoox.com>
Mon, 8 May 2017 03:15:56 +0000 (20:15 -0700)
This was a minor criticism by @zamar in the original pull request
https://github.com/official-stockfish/Stockfish/pull/1065
necessitating a comment explanation.

No functional change.

Closes #1091

src/movepick.cpp

index 992657e7654b7c3e1dc1a30c8ba36d718569c152..5c24666475713691033ee117eb29d69c683281db 100644 (file)
@@ -36,18 +36,16 @@ namespace {
 
   // partial_insertion_sort() sorts moves in descending order up to and including
   // a given limit. The order of moves smaller than the limit is left unspecified.
-  // To keep the implementation simple, *begin is always included in the sorted moves.
   void partial_insertion_sort(ExtMove* begin, ExtMove* end, int limit) {
 
-    for (ExtMove *sortedEnd = begin + 1, *p = begin + 1; p < end; ++p)
+    for (ExtMove *sortedEnd = begin, *p = begin + 1; p < end; ++p)
         if (p->value >= limit)
         {
             ExtMove tmp = *p, *q;
-            *p = *sortedEnd;
-            for (q = sortedEnd; q != begin && *(q-1) < tmp; --q)
-                *q = *(q-1);
+            *p = *++sortedEnd;
+            for (q = sortedEnd; q != begin && *(q - 1) < tmp; --q)
+                *q = *(q - 1);
             *q = tmp;
-            ++sortedEnd;
         }
   }