Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. import 'dart:math';
  2.  
  3. class Quick {
  4.  
  5. void swap(List<int> arr, int i, int j) {
  6. var temp = arr[i];
  7. arr[i] = arr[j];
  8. arr[j] = temp;
  9. }
  10.  
  11. int partition(List<int> arr, int pivot, int left, int right) {
  12. var pivotValue = arr[pivot];
  13. var partitionIndex = left;
  14.  
  15. for (var i = left; i < right; i++) {
  16. if (arr[i] < pivotValue) {
  17. swap(arr, i, partitionIndex);
  18. partitionIndex++;
  19. }
  20. }
  21.  
  22. swap(arr, right, partitionIndex);
  23. return partitionIndex;
  24. }
  25.  
  26. void step(List<int> arr, int left, int right) {
  27. var pivot = null;
  28. var partitionIndex = null;
  29.  
  30. if (left < right) {
  31. pivot = right;
  32. partitionIndex = partition(arr, pivot, left, right);
  33.  
  34. step(arr, left, partitionIndex - 1);
  35. step(arr, partitionIndex + 1, right);
  36. }
  37. }
  38.  
  39. void sort(List<int> arr) {
  40. var left = 0;
  41. var right = arr.length - 1;
  42. step(arr, left, right);
  43. }
  44.  
  45. }
  46.  
  47. String readableInt(int x) {
  48. var xS = x.toString().split('').reversed.join();
  49. var y = '';
  50. for (var i = 0; i < xS.length; i++) {
  51. if (i % 3 == 0 && i != 0) y += '.';
  52. y += xS[i];
  53. }
  54. return y.split('').reversed.join();
  55. }
  56.  
  57. void main() {
  58.  
  59. final quick = Quick();
  60.  
  61. var x = 1000000000;
  62.  
  63. var a = List.generate(x, (_) => Random().nextInt(x));
  64.  
  65. var w = Stopwatch()..start();
  66. quick.sort(a);
  67.  
  68. var items = readableInt(x);
  69. var ms = readableInt(w.elapsedMilliseconds);
  70. print('SORTED $items ITEMS IN $ms MS');
  71. w.stop();
  72.  
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement