Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(325)

Side by Side Diff: lib/core/sort.dart

Issue 11239004: Move DualPivotQuicksort from coreimpl to core as _Sort. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add note Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « lib/core/corelib_sources.gypi ('k') | lib/coreimpl/coreimpl.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // TODO(ajohnsen): Remove once coreimpl is eliminated.
6 /**
7 * WARNING: This method is temporary and will go away soon.
8 */
9 void coreSort(List l, int compare(a, b)) => _Sort.sort(l, compare);
10
5 /** 11 /**
6 * Dual-Pivot Quicksort algorithm. 12 * Dual-Pivot Quicksort algorithm.
7 * 13 *
8 * This class implements the dual-pivot quicksort algorithm as presented in 14 * This class implements the dual-pivot quicksort algorithm as presented in
9 * Vladimir Yaroslavskiy's paper. 15 * Vladimir Yaroslavskiy's paper.
10 * 16 *
11 * Some improvements have been copied from Android's implementation. 17 * Some improvements have been copied from Android's implementation.
12 */ 18 */
13 class DualPivotQuicksort { 19 class _Sort {
14 // When a list has less then [:_INSERTION_SORT_THRESHOLD:] elements it will 20 // When a list has less then [:_INSERTION_SORT_THRESHOLD:] elements it will
15 // be sorted by an insertion sort. 21 // be sorted by an insertion sort.
16 static const int _INSERTION_SORT_THRESHOLD = 32; 22 static const int _INSERTION_SORT_THRESHOLD = 32;
17 23
18 /** 24 /**
19 * Sorts all elements of the given list [:a:] according to the given 25 * Sorts all elements of the given list [:a:] according to the given
20 * [:compare:] function. 26 * [:compare:] function.
21 * 27 *
22 * The [:compare:] function takes two arguments [:x:] and [:y:] and returns 28 * The [:compare:] function takes two arguments [:x:] and [:y:] and returns
23 * -1 if [:x < y:], 29 * -1 if [:x < y:],
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 } else { 339 } else {
334 // The second partition looks as follows: 340 // The second partition looks as follows:
335 // [ * | >= pivot1 && <= pivot2 | * ] 341 // [ * | >= pivot1 && <= pivot2 | * ]
336 // ^ ^ 342 // ^ ^
337 // less great 343 // less great
338 // Simply sort it by recursive descent. 344 // Simply sort it by recursive descent.
339 _doSort(a, less, great, compare); 345 _doSort(a, less, great, compare);
340 } 346 }
341 } 347 }
342 } 348 }
OLDNEW
« no previous file with comments | « lib/core/corelib_sources.gypi ('k') | lib/coreimpl/coreimpl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698