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

Unified Diff: lib/src/algorithms.dart

Issue 1638163002: Modernize the package's style. (Closed) Base URL: git@github.com:dart-lang/collection@master
Patch Set: Code review changes Created 4 years, 11 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/priority_queue.dart ('k') | lib/src/canonicalized_map.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/algorithms.dart
diff --git a/lib/algorithms.dart b/lib/src/algorithms.dart
similarity index 69%
copy from lib/algorithms.dart
copy to lib/src/algorithms.dart
index 80f01070760209593dc3412618a1e3c3dd5abcb6..2b66d7df7014cfe921afa2592d5b447e0dc6ed2a 100644
--- a/lib/algorithms.dart
+++ b/lib/src/algorithms.dart
@@ -2,14 +2,9 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-/**
- * Operations on collections.
- */
-library dart.pkg.collection.algorithms;
+import "dart:math" as math;
-import "dart:math" show Random;
-
-/** Version of [binarySearch] optimized for comparable keys */
+/// Version of [binarySearch] optimized for comparable keys
int _comparableBinarySearch(List<Comparable> list, Comparable value) {
int min = 0;
int max = list.length;
@@ -27,17 +22,15 @@ int _comparableBinarySearch(List<Comparable> list, Comparable value) {
return -1;
}
-/**
- * Returns a position of the [value] in [sortedList], if it is there.
- *
- * If the list isn't sorted according to the [compare] function, the result
- * is unpredictable.
- *
- * If [compare] is omitted, it defaults to calling [Comparable.compareTo] on
- * the objects.
- *
- * Returns -1 if [value] is not in the list by default.
- */
+/// Returns a position of the [value] in [sortedList], if it is there.
+///
+/// If the list isn't sorted according to the [compare] function, the result
+/// is unpredictable.
+///
+/// If [compare] is omitted, it defaults to calling [Comparable.compareTo] on
+/// the objects.
+///
+/// Returns -1 if [value] is not in the list by default.
int binarySearch(List sortedList, value, { int compare(a, b) }) {
if (compare == null) {
return _comparableBinarySearch(sortedList, value);
@@ -58,7 +51,7 @@ int binarySearch(List sortedList, value, { int compare(a, b) }) {
return -1;
}
-/** Version of [lowerBound] optimized for comparable keys */
+/// Version of [lowerBound] optimized for comparable keys
int _comparableLowerBound(List<Comparable> list, Comparable value) {
int min = 0;
int max = list.length;
@@ -75,19 +68,17 @@ int _comparableLowerBound(List<Comparable> list, Comparable value) {
return min;
}
-/**
- * Returns the first position in [sortedList] that does not compare less than
- * [value].
- *
- * If the list isn't sorted according to the [compare] function, the result
- * is unpredictable.
- *
- * If [compare] is omitted, it defaults to calling [Comparable.compareTo] on
- * the objects.
- *
- * Returns [sortedList.length] if all the items in [sortedList] compare less
- * than [value].
- */
+/// Returns the first position in [sortedList] that does not compare less than
+/// [value].
+///
+/// If the list isn't sorted according to the [compare] function, the result
+/// is unpredictable.
+///
+/// If [compare] is omitted, it defaults to calling [Comparable.compareTo] on
+/// the objects.
+///
+/// Returns [sortedList.length] if all the items in [sortedList] compare less
+/// than [value].
int lowerBound(List sortedList, value, { int compare(a, b) }) {
if (compare == null) {
return _comparableLowerBound(sortedList, value);
@@ -107,13 +98,11 @@ int lowerBound(List sortedList, value, { int compare(a, b) }) {
return min;
}
-/**
- * Shuffles a list randomly.
- *
- * A sub-range of a list can be shuffled by providing [start] and [end].
- */
+/// Shuffles a list randomly.
+///
+/// A sub-range of a list can be shuffled by providing [start] and [end].
void shuffle(List list, [int start = 0, int end = null]) {
- Random random = new Random();
+ var random = new math.Random();
if (end == null) end = list.length;
int length = end - start;
while (length > 1) {
@@ -126,15 +115,13 @@ void shuffle(List list, [int start = 0, int end = null]) {
}
-/**
- * Reverses a list, or a part of a list, in-place.
- */
+/// Reverses a list, or a part of a list, in-place.
void reverse(List list, [int start = 0, int end = null]) {
if (end == null) end = list.length;
_reverse(list, start, end);
}
-// Internal helper function that assumes valid arguments.
+/// Internal helper function that assumes valid arguments.
void _reverse(List list, int start, int end) {
for (int i = start, j = end - 1; i < j; i++, j--) {
var tmp = list[i];
@@ -143,19 +130,17 @@ void _reverse(List list, int start, int end) {
}
}
-/**
- * Sort a list using insertion sort.
- *
- * Insertion sort is a simple sorting algorithm. For `n` elements it does on
- * the order of `n * log(n)` comparisons but up to `n` squared moves. The
- * sorting is performed in-place, without using extra memory.
- *
- * For short lists the many moves have less impact than the simple algorithm,
- * and it is often the favored sorting algorithm for short lists.
- *
- * This insertion sort is stable: Equal elements end up in the same order
- * as they started in.
- */
+/// Sort a list using insertion sort.
+///
+/// Insertion sort is a simple sorting algorithm. For `n` elements it does on
+/// the order of `n * log(n)` comparisons but up to `n` squared moves. The
+/// sorting is performed in-place, without using extra memory.
+///
+/// For short lists the many moves have less impact than the simple algorithm,
+/// and it is often the favored sorting algorithm for short lists.
+///
+/// This insertion sort is stable: Equal elements end up in the same order
+/// as they started in.
void insertionSort(List list,
{ int compare(a, b),
int start: 0,
@@ -167,13 +152,11 @@ void insertionSort(List list,
_insertionSort(list, compare, start, end, start + 1);
}
-/**
- * Internal helper function that assumes arguments correct.
- *
- * Assumes that the elements up to [sortedUntil] (not inclusive) are
- * already sorted. The [sortedUntil] values should always be at least
- * `start + 1`.
- */
+/// Internal helper function that assumes arguments correct.
+///
+/// Assumes that the elements up to [sortedUntil] (not inclusive) are
+/// already sorted. The [sortedUntil] values should always be at least
+/// `start + 1`.
void _insertionSort(List list, int compare(a, b), int start, int end,
int sortedUntil) {
for (int pos = sortedUntil; pos < end; pos++) {
@@ -194,22 +177,20 @@ void _insertionSort(List list, int compare(a, b), int start, int end,
}
}
-/** Limit below which merge sort defaults to insertion sort. */
+/// Limit below which merge sort defaults to insertion sort.
const int _MERGE_SORT_LIMIT = 32;
-/**
- * Sorts a list, or a range of a list, using the merge sort algorithm.
- *
- * Merge-sorting works by splitting the job into two parts, sorting each
- * recursively, and then merging the two sorted parts.
- *
- * This takes on the order of `n * log(n)` comparisons and moves to sort
- * `n` elements, but requires extra space of about the same size as the list
- * being sorted.
- *
- * This merge sort is stable: Equal elements end up in the same order
- * as they started in.
- */
+/// Sorts a list, or a range of a list, using the merge sort algorithm.
+///
+/// Merge-sorting works by splitting the job into two parts, sorting each
+/// recursively, and then merging the two sorted parts.
+///
+/// This takes on the order of `n * log(n)` comparisons and moves to sort
+/// `n` elements, but requires extra space of about the same size as the list
+/// being sorted.
+///
+/// This merge sort is stable: Equal elements end up in the same order
+/// as they started in.
void mergeSort(List list, {int start: 0, int end: null, int compare(a, b)}) {
if (end == null) end = list.length;
if (compare == null) compare = Comparable.compare;
@@ -239,12 +220,10 @@ void mergeSort(List list, {int start: 0, int end: null, int compare(a, b)}) {
list, start);
}
-/**
- * Performs an insertion sort into a potentially different list than the
- * one containing the original values.
- *
- * It will work in-place as well.
- */
+/// Performs an insertion sort into a potentially different list than the
+/// one containing the original values.
+///
+/// It will work in-place as well.
void _movingInsertionSort(List list, int compare(a, b), int start, int end,
List target, int targetOffset) {
int length = end - start;
@@ -268,15 +247,13 @@ void _movingInsertionSort(List list, int compare(a, b), int start, int end,
}
}
-/**
- * Sorts [list] from [start] to [end] into [target] at [targetOffset].
- *
- * The `target` list must be able to contain the range from `start` to `end`
- * after `targetOffset`.
- *
- * Allows target to be the same list as [list], as long as it's not
- * overlapping the `start..end` range.
- */
+/// Sorts [list] from [start] to [end] into [target] at [targetOffset].
+///
+/// The `target` list must be able to contain the range from `start` to `end`
+/// after `targetOffset`.
+///
+/// Allows target to be the same list as [list], as long as it's not
+/// overlapping the `start..end` range.
void _mergeSort(List list, int compare(a, b), int start, int end,
List target, int targetOffset) {
int length = end - start;
@@ -302,16 +279,14 @@ void _mergeSort(List list, int compare(a, b), int start, int end,
target, targetOffset);
}
-/**
- * Merges two lists into a target list.
- *
- * One of the input lists may be positioned at the end of the target
- * list.
- *
- * For equal object, elements from [firstList] are always preferred.
- * This allows the merge to be stable if the first list contains elements
- * that started out earlier than the ones in [secondList]
- */
+/// Merges two lists into a target list.
+///
+/// One of the input lists may be positioned at the end of the target
+/// list.
+///
+/// For equal object, elements from [firstList] are always preferred.
+/// This allows the merge to be stable if the first list contains elements
+/// that started out earlier than the ones in [secondList]
void _merge(int compare(a, b),
List firstList, int firstStart, int firstEnd,
List secondList, int secondStart, int secondEnd,
« no previous file with comments | « lib/priority_queue.dart ('k') | lib/src/canonicalized_map.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698