分治法实现众数问题

众数问题(分治法)
问题描述:给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数,多重集合S中重数最大的元素称为众数。例如,S={1, 2 ,2 ,2 ,3 ,5}。多重集合S的众数是2,其重数为3。算法设计:对于给定的由n个自然数组成的多重集合S,计算S的众数及其重数。数据输入:输入多重集S。数据输出:输出众数及重数。
例:输入: 6 1 2 2 2 3 5 2 3     
       输出: 2 4
package 众数问题;

import java.util.Scanner;

public class mode {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int n,i;//数组元素个数
  myMode m=new myMode();
  Scanner reader=new Scanner(System.in);
  System.out.print("请输入数组元素个数:");
  n=reader.nextInt();
  int[] array=new int[n];
  m.number=new int[n];
  System.out.println("请输入数组元素:");
  for(i=0;i=0;i--){
   System.out.println(m.number[i]+" "+m.sum);
  }
 }

}

class myMode {
	public int sum=0;//当前最高重复次数
	public int []number;//众数数组
	public int t=0;//当前众数数组元素个数-1
	public int Partition(int []a,int left,int right){//划分函数,以a[left]为主元,将数组划分为比a[left]小和比a[left]大的两部分
		int i=left,j=right;
		int temp;
		do{
			do{ 
				i++;
				if(i>=right)	break;//防止数组a只有一个元素时可能会发生循环判断条件的错误
			}while(a[i]a[left]);
			if(i

你可能感兴趣的:(数据结构与算法分析,算法,java,分治法)