整理 在一億個數中尋找出現頻率最多的4個 《轉》

2022-01-31 06:16:20 字數 4557 閱讀 6012

本文中所有演算法均蒐集於網路,在此感謝各位大師的無私奉獻。

主函式:

1

const

intmax

=1000

; //

最大取值範圍2//

const int count = 5000;

//小資料量

3const

intcount

=100000000

; //

資料量4

const

intresultlen =4

; //

返回長度56

static

void

main(

string

args)721

console.writeline(

"共耗時毫秒

", environment.tickcount

-tick);

22#endregion

2324

console.readkey();25}

26

演算法一:

1

static

int zswang_0(

int data,

intlen)2);

14/*

15for (var i = 0; i < 100; i++)

16=", indexs[i], dict[indexs[i]]);18}

19//

*/20

var result

=new

int[len];

21for

(var i =0

; i

<

len; i

++) result[i]

=indexs[i];

//輸出

22return

result;23}

24

執行結果如下:

演算法二:

1

static

int chrisak_0(

int data,

intlen)222

});23

th.start(i);

24threads[i -1

] =th;25}26

dict[0]

=new

int[max];

//主線程開始計算自己的部分

27for

(var i =0

; i

<

part; i++)

2831

for(var i =1

; i

<

ncpu;

++i)

//等待其它執行緒結束

32threads[i -1

].join();

33for

(var i =0

; i

<

max;

++i)

//合併結果

3440

for(

inti

=ncpu

*part; i

<

count;

++i)

//處理某些cpu核心個數無法整除的情況

41dict[0][

1]++;

42}43else

4449}50

//按出現的次數排序

51var indexs

=new

int[max];

52for

(var i =0

; i

<

max; i

++) indexs[i]

=i;

//獲得完整的序號

53array.sort(indexs,

delegate

(int

a, int

b)54

);57

for(var i =0

; i

<

50; i++)

58=", indexs[i], dict[

0][indexs[i]]);60}

61var result

=new

int[len];

62for

(var i =0

; i

<

len; i

++) result[i]

=indexs[i];

//輸出

63return

result;64}

65

執行結果如下:

演算法三:

1

static

int wuyi8808_0(

int data,

intlen)2=

", indexs[i], dict[i]);17}

18//

*/19

var result

=new

int[len];

20for

(var i =0

; i

<

len; i

++) result[i]

=indexs[max -i

-1]; //

輸出21

return

result;22}

23

執行結果如下:

演算法四:

1

static

int sp1234_0(

int data,

intlen)218

else

if(m

>

len)

19t =m

-1;20

else

21f =m

+1;22

goto

loop;23}

2425

static

intpartition(

int value,

int data,

inti,

intj)

2642

43m

=data[i];

44data[i]

=data[j];

45data[j] =m;

46i++;

47j--;

48goto

begin;49}

50

執行結果如下:

演算法五:

1

static

int wuyi8808_1(

int data,

intlen)215

}16return

result;17}

18

執行結果如下:

演算法六:

1

struct

set2

6static

int lcl_0(

int data,

intlen)716

17//

按出現的次數排序

18array.sort(dict,

delegate

(set

a, set

b)19

);22

23int

result

=new

int[len];

24for

(inti =

0; i

<

len; i

++) result[i]

=dict[i].key;

//輸出

25return

result;26}

27

執行結果如下:

演算法七:

1

static

int lihanbing_0(

int data,

intlen)227

}28return

result;29}

30

運結結果如下:

在1000個數中找出出現次數最多的數

package com.fonxian.findmax 問題 在乙個由自然數1 1000中某些數字所組成的陣列中,每個數字可能出現零次或者多次。設計乙個演算法,找出出現次數最多的數字。public class findmax 找到出現次數最多的數 for int t 0 t 1000 t retur...

從一億個ip找出出現次數最多的IP 分治法

1,hash雜湊 2,找到每個塊出現次數最多的 預設出現均勻 可以用字典樹 3,在每個塊出現最多的資料中挑選出最大的為結果 問題一 怎麼在海量資料中找出重複次數最多的乙個 演算法思想 方案1 先做hash,然後求模對映為小檔案,求出每個小檔案中重複次數最多的乙個,並記錄重複次數。然後找出上一步求出的...

從乙個陣列中尋找出現奇數次的數字

假設給定了陣列nums為 0,1,2,3,4,5,6,7,8,9,10,10,9,8,7,6,5,4,1,2,3,3,0 其中3出現了3次 而其他數字都出現了兩次 則我們應該得到結果為3 第一種方式 使用hash 1 2 使用hash3 4public static int singlenumber...