github.com/nitinawathare/ethereumassignment3@v0.0.0-20211021213010-f07344c2b868/go-ethereum/scripts/contracts/sortMemory.sol (about)

     1  pragma solidity ^0.4.24;
     2  
     3  contract Sorter {    
     4      
     5      function sort(int size) public {
     6          int[] memory data = new int[](uint(size));
     7          for (int x = 0; x < size; x++) {
     8              data[uint(x)] = size-x;
     9          }
    10          quickSort(data, 0, size - 1);
    11      }   
    12  
    13      function quickSort(int[] arr, int left, int right) internal {
    14          int i = left;
    15          int j = right;
    16          if (i == j) return;
    17          int pivot = arr[uint(left + (right - left) / 2)];
    18          while (i <= j) {
    19              while (arr[uint(i)] < pivot) {
    20                  i++;
    21              }
    22              while (pivot < arr[uint(j)]){
    23                  j--;
    24              }
    25              if (i <= j) {
    26                  int temp = arr[uint(i)];
    27                  arr[uint(i)] = arr[uint(j)];
    28                  arr[uint(j)] = temp;
    29                  i++;
    30                  j--;
    31              }
    32          }
    33      }
    34  }