区块链 solidity 快排

Posted 软件工程小施同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链 solidity 快排相关的知识,希望对你有一定的参考价值。

快速排序 

pragma solidity ^0.4.0;

contract Sorter {
    event finish(uint size, uint signature);
    
    function sort(uint size, uint signature) {

        // 初始化要排序的数组
        uint[] memory data = new uint[](size);
        for (uint x = 0; x < data.length; x++) {
            data[x] = size-x;
        }
        
        // 快排
        quickSort(data, 0, data.length - 1);
        finish(size, signature);
    }
    
    // 快排算法
    function quickSort(uint[] arr, uint left, uint right) internal {
        uint i = left;
        uint j = right;
        if (i == j) return;
        uint pivot = arr[left + (right - left) / 2];
        while (i <= j) {
            while (arr[i] < pivot) i++;
            while (pivot < arr[j]) j--;
            if (i <= j) {
                (arr[i], arr[j]) = (arr[j], arr[i]);
                i++;
                j--;
            }
        }
        if (left < j)
            quickSort(arr, left, j);
        if (i < right)
            quickSort(arr, i, right);
    }
}

 

以上是关于区块链 solidity 快排的主要内容,如果未能解决你的问题,请参考以下文章

区块链Solidity智能合约与Solidity介绍

java玩转区块链-基础篇-solidity语法-基础类型

区块链特辑——solidity语言基础

区块链Solidity智能合约语言学习笔记

区块链开发之Solidity编程基础

区块链2.0以太坊智能合约solidity之helloworld