English 中文(简体)
• 如何计算O(N)无节制的 array类惯性模式?
原标题:how to calculate the mode of an unsorted array of integers in O(N)?
  • 时间:2010-09-22 20:08:33
  •  标签:
  • arrays
  • mode

......采用迭代程序(无表格)?

它不是家务劳动。 模式一指的是最频繁的数目(统计模式)。 我不想使用一个黑板,因为我想知道如何以反复的方式做到这一点。

最佳回答

• Fantius, how bout this?

将该清单与雷达Sort(BucketSort)算法(技术上为O(N)时间;数字必须分类。 从第一个要素开始,铭记其价值,开始计算1。 在你达到不同价值之前,通过名单上删除该数字。 如果这一数值的计算高于目前的高数值,则记住这一价值并算作模式。 如果你与高点挂钩,就会记住(或全部)数字。

...... 是的,是的,RadixSort并不是一种内部的,因此,涉及你可以称之为“清醒”的东西(按现任数字编出的收集资料)。 然而,该表被用于分类,而不是计算方式。

我要说的是,在一份未经许可的清单中,如果不涉及一个敏感的SOMEWHERE,就不可能按部就班地计算这一模式。 在分类清单中,该算法的后半部分仅跟踪现行最高算法。

问题回答

象家庭工作这样的明显健康。 但尝试这样做:一度通过名单,数量最多。 形成一系列的愤怒,其中有许多因素,最初都是零。 之后,再次逐个逐个逐个逐个逐个逐个逐个逐个逐个增加。 最后,扫描你的阵列,并退还价值最高的指数。 这将在大约线性时间进行,而任何包含某种算法的算法很可能需要NlogN的时间或更糟的时间。 然而,这一解决办法是记忆犹新;它基本上只给你一个席位。

认为许多(但并非全部)语文使用零基的阵列,因此,从“自然”号改为指数,分数一,然后从指数改为自然数字。

如果你不希望使用散装,则使用经过改装的双轨搜索仪(每秒钟有一个反面)。 阵列中的每一部分都插入三边。 如果在三角地已经存在,则会增加反射。 最终,最高点为 no。

当然,你也可以使用一个地图,绘制反变量的地图,并将以同样的方式工作。 我不理解你关于它不是一种挑衅的说法。 你们通过阵列敲响,然后,你通过散列图成员敲响,以找到最高级别的反响。

仅使用计数,并研究储存每个实体发生次数的阵列。

我在沙尔准备了两个具有不同空间和时间复杂性的节目:

第一个使用“风险阵列”是指O(k)在时间复杂方面,S(k+1)在所需空间方面,K是投入最多的。

input =[1,2,3,8,4,6,1,3,7,9,6,1,9]

def find_max(tab):
    max=tab[0]
    for i in range(0,len(tab)):
        if tab[i] > max:
            max=tab[i]
    return max

C = [0]*(find_max(input)+1)
print len(C)
def count_occurences(tab):
    max_occurence=C[0]
    max_occurence_index=0
    for i in range(0,len(tab)):
        C[tab[i]]=C[tab[i]]+1
        if C[tab[i]]>max_occurence:
            max_occurence = C[tab[i]]
            max_occurence_index=tab[i]
    return max_occurence_index

print count_occurences(input)

NOTE: Imagine such pitiful example of submissions as an range [1, 10^8,1,1,1,1], there will be range of length k+1=100000001 need.

第二种解决办法假定,我们在寻找模式之前就把我们的意见分类。 我使用的是rad形,它有时间的复杂性O(kn),其中K是最长数量,N是投入阵列的大小。 那么,我们必须整整整整块地块地块地块地块地块,确定最长的排位,以适应模式。

input =[1,2,3,8,4,6,1,3,7,9,6,1,9]

def radix_sort(A):
    len_A = len(A)
    mod = 5 #init num of buckets
    div = 1
    while True:
        the_buckets =  [[], [], [], [], [], [], [], [], [], []]
        for value in A:
            ldigit = value % mod
            ldigit = ldigit / div
            the_buckets[ldigit].append(value)
        mod = mod * 10
        div = div * 10
        if len(the_buckets[0]) == len_A:
            return the_buckets[0]
        A = []
        rd_list_append = A.append
        for b in the_buckets:
            for i in b:
                rd_list_append(i)     

def find_mode_in_sorted(A):
    mode=A[0]
    number_of_occurences =1
    number_of_occurences_canidate=0
    for i in range(1,len(A)):
        if A[i] == mode:
            number_of_occurences =number_of_occurences +1
        else:
            number_of_occurences_canidate=number_of_occurences_canidate+1
        if A[i] != A[i-1]:
            number_of_occurences_canidate=0
        if number_of_occurences_canidate > number_of_occurences :
            mode=A[i]
            number_of_occurences =number_of_occurences_canidate+1
    return mode#,number_of_occurences 

s_input=radix_sort(input)
print find_mode_in_sorted(s_input)

利用 Java文:

const mode = (arr) => {
    let numMapping = {};
    let mode
    let greatestFreq = 0;
    for(var i = 0; i < arr.length; i++){
        if(numMapping[arr[i]] === undefined){
            numMapping[arr[i]] = 0;
        }
        numMapping[arr[i]] += 1;
        if (numMapping[arr[i]] > greatestFreq){
          greatestFreq = numMapping[arr[i]]
          mode = arr[i]
        }
    }
    return parseInt(mode)
}




相关问题
WordPress Data Storage Efficiency

I ve been asked to review a WordPress plugin of sorts and try to find ways of making it faster. The premise of this plugin is basically to store a bunch of users and shifts and appointments and ...

Convert a 2D array index into a 1D index

I have two arrays for a chess variant I am coding in java...I have a console version so far which represents the board as a 1D array (size is 32) but I am working on making a GUI for it and I want it ...

Convert an array of integers for use in a SQL "IN" clause

Surely there is a framework method that given an array of integers, strings etc converts them into a list that can be used in a SQL "IN" clause? e.g. int[] values = {1,2,3}; would go to "(1,2,3)"

Sorting twodimensional Array in AS3

So, i have a two-dimensional Array of ID s and vote count - voteArray[i][0] = ID, voteArray[i][1] = vote count I want the top 3 voted items to be displayed in different colors, so i have a 2nd Array -...

C++ Array Sort Me

Stuck on an array sorter. Have to sort numbers from largest to smallest. I m trying two loops (one nested in the other). Here s the code: int counter=0; // inner counter int counter2=0; // outer ...

PHP array callback functions for cleaning output

I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...

Best practice of big javascript objects

sry for this imprecise topic name. I am querying a dataset a lot of times so using ajax request would end up in tons of http requests. For this reason I decided to use the json encode method to ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

热门标签