Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在排序数组中查找支配项_C++_Arrays - Fatal编程技术网

C++ 在排序数组中查找支配项

C++ 在排序数组中查找支配项,c++,arrays,C++,Arrays,我对代码片段有问题。我想在已经排序的数组中找到优势。问题是,当数组中有两个或多个主元素时,它只打印一个。我的意思是这样的情况: 数字:1,1,1,2,2,3,3,3,4,5有几种不同的方法可以做到这一点,但几乎所有的方法都需要多次传递数据 这样做的一个简单方法是,使用例如A。将容器中的值用作键,并将每个值的计数用作数据 然后,您需要对完整容器进行一次遍历以填充映射,对映射进行两次遍历—一次查找最大计数,另一次查找等于最大计数的所有条目 是的,您需要三次传递才能找到所有主要元素,但在您的示例中,第

我对代码片段有问题。我想在已经排序的数组中找到优势。问题是,当数组中有两个或多个主元素时,它只打印一个。我的意思是这样的情况:
数字:1,1,1,2,2,3,3,3,4,5有几种不同的方法可以做到这一点,但几乎所有的方法都需要多次传递数据

这样做的一个简单方法是,使用例如A。将容器中的值用作键,并将每个值的计数用作数据

然后,您需要对完整容器进行一次遍历以填充映射,对映射进行两次遍历—一次查找最大计数,另一次查找等于最大计数的所有条目

是的,您需要三次传递才能找到所有主要元素,但在您的示例中,第二次和第三次传递仅循环五个元素,而不是原始容器的所有十一个元素


如果未对原始容器进行排序,上述方法也有效。

一种简单的方法,尽管效率低下,但可以再次循环整个数组,并打印所有频率等于发生频率的元素。您可以使用计数排序将排序和查找主项统一起来。由于您处理整数,一个简单的映射可以将您的值存储为键,并将该值的计数存储为值。若你们追踪当前的主导位置,那个么你们将能够在单通道地图中输出它们。最坏的情况是,如果您有许多不同的值,那么您可能不应该使用此方法。如果您修复了代码标识,您可能已经注意到主循环在if occurrency>max测试块之后结束。打印发生在循环之外,只能打印最后找到的文件。
n- number of integers, initiated by user
int t[n];

...generating random numbers, sorting...

int actuall, max, dominant, occurency;  

 max = 0;
 for(int i = 0; i<n; i++)
 {
   actuall= t[i]; 
   occurency = 0;

for(int j = 0; j<n; j++) 
{
if(t[j] == actuall) occurency++;
}
if(occurency > max)
{
  max = occurency; 
 dominant = actuall;      
  }           
}

 if(max == 1){
 cout<<"\nThere is no dominant";
 }

 if(max > 1) { 
 cout << endl <<"Dominant: " << dominant <<", occurency: " << max << endl;
 }