对数器验证小和算法是否正确

题目:在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个数组的小和。

javascript 复制代码
function randomArr(size, value) {
    var length = Math.floor((size + 1) * Math.random())
    var arr = []
    for(var i = 0; i < length; i++) {
        arr[i] = Math.floor((value + 1) * Math.random())
    }
    return arr
}
function sort(arr) {
    if(arr.length < 1) {
        return 0
    }
    return mergeSort(arr, 0, arr.length - 1)
}
function mergeSort(arr, l, r) {
    if(l === r) {
        return 0
    }
    var min = Math.floor((r + l) / 2)
    return mergeSort(arr, l, min) + mergeSort(arr, min + 1, r) + merge(arr, l, r, min)
}
function merge(arr, l, r, min) {
    var p1 = l
    var p2 = min + 1
    var a = []
    var i = 0
    var sum = 0
    while(p1 <= min && p2 <= r) {
        if(arr[p1] - arr[p2] < 0) {
            sum += arr[p1] * (r - p2 + 1)
            a[i] = arr[p1]
            i++
            p1++
        } else {
            a[i] = arr[p2]
            i++
            p2++
        }
    }
    while(p1 <= min) {
        a[i] = arr[p1]
        i++
        p1++
    }
    while(p2 <= r) {
        a[i] = arr[p2]
        i++
        p2++
    }
    arr.splice(l, r - l + 1, ...a)
    return sum
}
function rightWay(arr) {
  if(arr.length < 1) {
      return 0
  }
  var sum = 0
  for(var i = 0; i < arr.length; i++) {
    for(var j = 0; j < i; j++) {
      if(arr[j] < arr[i]) {
        sum += arr[j]
      }
    }
  }
  return sum
}
function logarithm() {
    var time = 50000
    var size = 10
    var value = 100
    for(var i = 0; i < time; i++) {
        var arr1 = randomArr(size, value)
        var arr2 = [...arr1]
        var arr3 = [...arr1]
        
        var sum2 = rightWay(arr2)
        var sum3 = sort(arr3)
        if(sum2 !== sum3) {
          console.log('arr1', arr1)
          console.log('arr2', arr2)
          console.log('arr3', arr3)
          break;
        }
    }
    if(i >= time) {
      console.log('你写的算法是对的')
    }
}
logarithm()
相关推荐
西农小陈3 分钟前
python-字符排列问题
数据结构·python·算法
TechQuester18 分钟前
OpenAI 刚刚推出 o1 大模型!!突破LLM极限
人工智能·python·gpt·算法·chatgpt
西农小陈29 分钟前
python-简单的数据结构
数据结构·python·算法
_Chocolate30 分钟前
十大排序(一):冒泡排序
c语言·数据结构·算法
running thunderbolt1 小时前
C++:类和对象全解
c语言·开发语言·c++·算法
小陈的进阶之路2 小时前
c++刷题
开发语言·c++·算法
model20052 小时前
sahi目标检测java实现
java·算法·目标检测
源代码•宸3 小时前
Leetcode—322. 零钱兑换【中等】(memset(dp,0x3f, sizeof(dp))
c++·算法·leetcode·职场和发展·dp
机械心3 小时前
最优化理论与自动驾驶(一):概述
人工智能·算法·自动驾驶
给自己做减法3 小时前
排序算法快速记忆
java·算法·排序算法