区块链 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 快排的主要内容,如果未能解决你的问题,请参考以下文章