minnera

#10daysofstatistics #day0

Nov 7th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.89 KB | None | 0 0
  1. //https://www.hackerrank.com/challenges/s10-basic-statistics/problem
  2.  
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Linq;
  7.  
  8. class Solution {
  9.     static void Main(String[] args) {
  10.         /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution */
  11.         int quantity = int.Parse(Console.ReadLine());
  12.         string s = Console.ReadLine();
  13.         int[] intArray = s.Split(' ').Select(str => int.Parse(str)).ToArray();
  14.         double mean = Mean(intArray, quantity);
  15.         Console.WriteLine(mean.ToString("F1"));
  16.         double median = Median(intArray, quantity);
  17.         Console.WriteLine(median.ToString("F1"));
  18.         int mode = Mode(intArray, quantity);       
  19.         Console.WriteLine(mode);
  20.     }
  21.  
  22.     public static double Mean(int[] intArray, int quantity){
  23.         double sum = 0;
  24.         foreach(int i in intArray){
  25.             sum += i;
  26.         }
  27.         return sum / quantity;
  28.     }
  29.    
  30.     public static void QuickSortRecursive(ref int[] data, int left, int right){
  31.         if(left < right){
  32.             int q = Partition(ref data, left, right);
  33.             QuickSortRecursive(ref data, left, q - 1);
  34.             QuickSortRecursive(ref data, q + 1, right);
  35.         }
  36.     }
  37.  
  38.     public static int Partition(ref int[] data, int left, int right){
  39.         int pivot = data[right];
  40.         int temp;
  41.         int i = left;
  42.        
  43.         for(int j = left; j < right; ++j){
  44.             if(data[j] <= pivot){
  45.                 temp = data[j];
  46.                 data[j] = data[i];
  47.                 data[i] = temp;
  48.                 i++;
  49.             }
  50.         }
  51.         data[right] = data[i];
  52.         data[i] = pivot;
  53.         return i;
  54.     }
  55.    
  56.     public static double Median(int[] intArray, int quantity){
  57.         //először sorba kell rendezni
  58.        
  59.         QuickSortRecursive(ref intArray, 0, quantity-1);
  60.        
  61.         if(quantity % 2 == 1){
  62.             return (double)intArray[quantity/2];
  63.         }
  64.         else{
  65.             double medianHelper = intArray[quantity/2] + intArray[(quantity/2)-1];
  66.             return medianHelper / 2;
  67.         }
  68.     }
  69.  
  70.     public static int Mode(int[] intArray, int quantity){
  71.         int[,] helper = new int[quantity, 2];
  72.         //feltöltjük a mennyiség jelölésére használt helyeket 0-val kezdésnek, a szám értékeket pedig -1-nek (ami nem lehet egyébként) defaultnak
  73.         for(int i = 0; i < quantity; i++){
  74.             helper[i,0] = -1;
  75.             helper[i,1] = 0;
  76.         }
  77.    
  78.         foreach(int i in intArray){
  79.             int j = 0;
  80.             while(helper[j,0] != -1 && helper[j,0] != i){
  81.                 j++;
  82.                 // ez elvileg akkor nem kell j < quantity &&
  83.             }
  84.            
  85.             if(helper[j,0] == i){
  86.                 helper[j,1]++;
  87.             }//egyébként nem volt találat
  88.             else{
  89.                 helper[j,0] = i;
  90.                 helper[j,1]++;
  91.             }
  92.         }
  93.        
  94.         int k = 1;
  95.         int maxIndex = 0;
  96.         while(k < quantity && helper[k,0] != -1){
  97.             if(helper[k,1] > helper[maxIndex,1]){
  98.                 maxIndex = k;
  99.             }
  100.             else if(helper[k,1] == helper[maxIndex,1] && helper[maxIndex,0] > helper[k,0]){
  101.                 maxIndex = k;
  102.             }
  103.             k++;
  104.         }
  105.         return helper[maxIndex,0];
  106.     }
  107. }
Add Comment
Please, Sign In to add comment