精华内容
下载资源
问答
  • C/C++ 求中位数的值

    2021-04-09 10:51:54
    求中位数的值
  • 算法 - n个数的中位数C++

    万次阅读 多人点赞 2019-02-28 10:19:02
    * n个数的中位数 - C++ - by Chimomo * * 对于一组有有限个数的数据来说,它们的中位数是这样的一种数:这群数据里的一半的数据比它大,而另外一半数据比它小。 * 计算有限个数的数据的中位数的方法是:把所有...

    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 

    /*
     * 求n个数的中位数 - C++ - by Chimomo
     *
     * 对于一组有有限个数的数据来说,它们的中位数是这样的一种数:这群数据里的一半的数据比它大,而另外一半数据比它小。
     * 计算有限个数的数据的中位数的方法是:把所有的同类数据按照大小的顺序排列。
     * 如果数据的个数是奇数,则中间那个数据就是这群数据的中位数;
     * 如果数据的个数是偶数,则中间那2个数据的算术平均值就是这群数据的中位数。
     */
    
    #include <iostream>
    #include <cassert>
    #include <stack>
    #include <math.h>
    
    using namespace std;
    
    int QuickSortOnce(int a[], int low, int high) {
        // 将首元素作为枢轴。
        int pivot = a[low];
        int i = low, j = high;
    
        while (i < j) {
            // 从右到左,寻找首个小于pivot的元素。
            while (a[j] >= pivot && i < j) {
                j--;
            }
    
            // 执行到此,j已指向从右端起首个小于或等于pivot的元素。
            // 执行替换。
            a[i] = a[j];
    
            // 从左到右,寻找首个大于pivot的元素。
            while (a[i] <= pivot && i < j) {
                i++;
            }
    
            // 执行到此,i已指向从左端起首个大于或等于pivot的元素。
            // 执行替换。
            a[j] = a[i];
        }
    
        // 退出while循环,执行至此,必定是i=j的情况。
        // i(或j)指向的即是枢轴的位置,定位该趟排序的枢轴并将该位置返回。
        a[i] = pivot;
    
        return i;
    }
    
    void QuickSort(int a[], int low, int high) {
        if (low >= high) {
            return;
        }
    
        int pivot = QuickSortOnce(a, low, high);
    
        // 对枢轴的左端进行排序。
        QuickSort(a, low, pivot - 1);
    
        // 对枢轴的右端进行排序。
        QuickSort(a, pivot + 1, high);
    }
    
    int EvaluateMedian(int a[], int n) {
        QuickSort(a, 0, n - 1);
    
        if (n % 2 != 0) {
            return a[n / 2];
        } else {
            return (a[n / 2] + a[n / 2 - 1]) / 2;
        }
    }
    
    int main() {
        int a[9] = {-5, 345, 88, 203, 554, 1, 89, 909, 1001};
        cout << EvaluateMedian(a, 9) << endl;
        return 0;
    }
    
    // Output:
    /*
    203
    
    */
    

     

    展开全文
  • C++实现求中位数

    千次阅读 2020-03-14 20:04:03
    给出一组无序整数,中位数,如果最中间两个数的平均数,向下取整即可(不需要使用浮点数) 输入输出格式 输入描述: 该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1&...

    中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数). 给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)

    输入输出格式
    输入描述:
    该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1<=N<=10000.
    接着N行为N个数据的输入,N=0时结束输入

    在这里插入图片描述

    #include <iostream>
    #include<algorithm>
    using namespace std;
    
    int main()
    {
    	int n;
    	while (cin >> n)
    	{
    		if (n == 0)
    			break;
    		int *a = new int[n];   //动态建立数组
    		int median = 0;
    		for (int i = 0; i < n; i++)    
    			cin >> a[i];
    		if (n % 2 != 0)    //奇数个
    			median = a[(n / 2)-1];
    		else
    			median = (a[(n / 2)-1] + a[(n / 2 + 1)-1]) / 2;
    		cout << median << endl;
    	}
    	return 0;
    }
    

    运行结果

    展开全文
  • 单链表反序及求中位数C++实现,初始化链表时用的是随机种子srand((int)time(0))。
  • 2020.11.07C语言分享●●●#01#前言C语言案例---第二小数n个整数第二小的。注意,约定相同的整数看成一个。比如,有5个分别是1,1,3,4,5,那么第二小的就是3。输入包含多组测试数据。输入整数C,表示有C...
    caaa679b9c2150b46c507bceeafc6b82.pngcaaa679b9c2150b46c507bceeafc6b82.pngcaaa679b9c2150b46c507bceeafc6b82.pngcaaa679b9c2150b46c507bceeafc6b82.png

    2020.11.07

    C语言分享

    #01#前言

    ef48121f3b3d25bb4d7547fadcc32131.png

    ef48121f3b3d25bb4d7547fadcc32131.png

    C语言案例---求第二小数

        求n个整数中第二小的数。注意,约定相同的整数看成一个数。比如,有5个数分别是1,1,3,4,5,那么第二小的数就是3。

        输入包含多组测试数据。输入整数C,表示有C组数据;每组测试数据前一行输入整数n,表示本组测试数据有n个整数(2<=n<=10),接着一行是n个整数(每个数均小于100)。

    C语言案例---样例输入

    3

    2

    1 2

    2

    5

    1 1 3 4 5

    3

    3

    1 1 1 

     (没有输出因为没有第二小的数)

    大家可以结合代码来看,从代码来理解比较简单

    本文分成三部分:

    1、例子介绍

    2、具体代码及说明

    3、讨论区

    #OVER#

    7d6dba23807df56681ffbe3ff86e3417.png

    #02#具体代码及说明

    #include
    int main()
    {
           int n, a[100], b[100], i, j, c, e = 0,w=1;
           int temp, d;
           printf("请输入有几组");
           scanf("%d", &d);
           printf("第%d组,请输入有几个整数:",w);
           while (scanf("%d", &n) != '\n')
           {
               printf("请输入第%d组的%d个整数",w++,n);
                   for (i = 1; i <= n; i++)
                   {
                           scanf("%d", &a[i]);
                   }
                   i = 1;
                   while (i <= n)
                   {
                           for (j = i + 1; j <= n; j++)
                                   if (a[i] < a[j])
                                   {
                                           temp = a[j];
                                           a[j] = a[i];
                                           a[i] = temp;
                                   }
                           b[i] = a[i];
                           i++;
                   }
                   for (i = n - 1; i >= 1; i--)
                   {
                           if (n == 2)
                           {
                                   for (i = 1; i <= 1; i++)
                                           if (a[i] > a[i + 1]) printf("第二小是:%d", a[i]);
                                           else if (a[i + 1] > a[i]) printf("第二小是:%d", a[i + 1]);
                                           else printf("NO");
                                   goto c;
                           }
                           else if (b[i] > b[i + 1])
                           {
                                   printf("第二小是:%d", a[i]);
                                   goto c;
                           }
                           if (i == 1) printf("NO");
                   }
           c:
                   printf("\n");
                   e++;
                   if (e == d)
                           break;
                   printf("第%d组,请输入有几个整数:",w);
           }
           return 0;
    }

    修改意见:看看怎么样让第二小的数在最后的时候在输出

    #OVER#

    7d6dba23807df56681ffbe3ff86e3417.png

    #03#运行结果

    请输入有几组3

    第1组,请输入有几个整数:5

    请输入第1组的5个整数1 2 3 4 5

    第二小是:2

    第2组,请输入有几个整数:6

    请输入第2组的6个整数7 5 2 4 6 3

    第二小是:3

    第3组,请输入有几个整数:3

    请输入第3组的3个整数1 5 9

    第二小是:5

    #OVER#

    caaa679b9c2150b46c507bceeafc6b82.pngcaaa679b9c2150b46c507bceeafc6b82.pngcaaa679b9c2150b46c507bceeafc6b82.png

    视频来源:科学大世界

    文字:科学大世界

    文章封面图:网络

    转载请声明:科学大世界

    如有侵权请到公众号内意见反馈处反馈

    😘😘😘

    124f14e1dbc08df07e482ad92bf02187.png

    扫码关注我们

    觉得不错点个在看呗

    2020/11/7

    展开全文
  • 那么,今天我们就来讨论,怎么使用冒泡排序的方法,数组元素的中位数? 案例 题目描述 中位数指的是一组数,如果按照大小排序排好后最中间的那个数的值,如果有偶数个元素,那么就是最中间两个数的平均数。 比如:...

    中位数

    数组是C++语言重要的数据结构,对它的一些基本操作要熟练掌握。那么,今天我们就来讨论,怎么使用冒泡排序的方法,求数组元素的中位数?

    案例

    题目描述

    中位数指的是一组数,如果按照大小排序排好后最中间的那个数的值,如果有偶数个元素,那么就是最中间两个数的平均数。

    比如:2 5 8 1 6,排序后的结果为1 2 5 6 8,那么这组数的中位数就是5。

    再比如:8 9 1 2 3 0,排序后的结果为0 1 2 3 8 9,那么这组书的中位数就是(2+3)/2=2.5。

    输入

    第一行:一个整数n代表有n个数。

    第二行:n个数的值。

    样例输入

    5
    2 5 8 1 6
    

    输出

    中位数(结果保留1位小数)。

    样例输出

    5.0
    

    程序代码

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main(){
    	/*
    		思路:先对数组元素排序,然后判断奇偶,找出中位数 
    	*/ 
    	int n,a[1000],i,j,t;
    	
    	double v;	// 存放中位数
    	
    	cin >> n;
    	for(i = 0 ; i < n ; i++){
    		cin >> a[i];
    	}
    	
    	// 对数组元素按照小到大进行排序
    	for(i = 1 ; i < n ; i++){
    		for(j = 0 ; j <= n - i - j ; j++){
    			if(a[j] > a[j + 1]){
    				t = a[j];
    				a[j] = a[j + 1];
    				a[j + 1] = t;
    			}
    		}
    	}
    	
    	// 得到中位数
    	if(n % 2 != 0){
    		v = a[n / 2];
    	}else{
    		v = (a[n / 2] + a[n / 2 - 1]) / 2.0;
    	}
    	
    	cout << fixed << setprecision(1) << v << endl;
    }
    
    展开全文
  • <code class="language-cpp">#include <stdio.h> #include <queue> class MedianFinder { public: MedianFinder() { } void addNum(int num) { if (big_queue.empty()){ ... </p>
  • 以前实现大小根堆总要自己写代码,循环父节点和孩子节点比大小换位置,今天看到C++中有默认的大小根堆实现 // 大根堆 priority_queue<type> BigRoot; // 小根堆 priority_queue<type, vector<type>, ...
  • 请找出这两个有序数组的中位数。要求算法的时间复杂度为O(log (m+n)) 。 你可以假设nums1和nums2不同时为空。 示例 1: nums1 = [1, 3] nums2 = [2] 中位数是 2.0 示例 2: nums1 = [1, 2] nums2 =...
  • 什么是吸血鬼数字? 就像这样的 1260=2160 1827=2187 #include&lt;iostream&gt; using namespace std; int main(){ int i; int a,b,c,d; int aa,bb; for(i=1000;i&lt;10000;... ...
  • 中位数也就是中值; 故需要先对数组进行排序(选择,插入,冒泡排序),然后在找出数组的中值。 //中值 #include<iostream> using namespace std; int Median(int a[],int N) { int i,j,max; ...
  • c++ STL求中位数,要求时间复杂度为O(n)? 怎么整,我看了几个的,感觉,要是求中位数的 中位数那种算法需要排序啊,还怎么保障O(n)? 求高手代码!!!!!
  • 我写了一个求中位数C++小程序,代码如下: #include<iostream> #include<string> #include<vector> #include <algorithm> #include<cmath> using namespace std; inline ...
  • c++二分法查找中位数

    千次阅读 2018-10-09 16:32:16
    举例: 1 2 2 2 2 3 /* Name: 中位数median Author: 巧若拙 ...2^31)之间,请使用二分法这n个整数的中位数。 所谓中位数,是指将这n个数排序之后,排在正中间的数。 输...
  • C++ n为数的自幂(水仙花) 常用的上标:⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ⁿ º ˙ 常用的下标:₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎ ₐ ₑ ₒ ₓ ₔ ₕ ₖ ₗ ₘ ₙ ₚ ₛ ₜ ...
  • 目录 1,题目描述 题目大意 2,思路 ...两递增序列的中位数(合并之后的)。 2,思路 递增序列合并,而且只需输出中位数即可(位于(num1+num2+1)/ 2的元素)。 先接受第一行数据,...
  • 课程的随堂作业,C语言的,用dev就能运行,萌新代码,勿喷,仅仅帮助不想写作业的朋友方便一下,反正老师也不会仔细检查的
  • 2.1 合并序列求中位数 2.1.1 算法描述 2.1.2 算法实现(C++) 2.1.3 复杂度分析 2.2 二分法求中位数 2.2.1 算法描述 2.2.2 算法实现(C++) 2.2.3 复杂度分析 1 题目描述 给出两个有序数列,长度为的数列和...
  • // 利用随机化快速排序带权中位数.cpp : Defines the entry point for the console application. // //中位数:n个元素集合中,第n/2小的元素,如果是偶数个,则选择中间二个的算术平均值。 //带权中位数:对于...
  • 问题:写一个sql语句查询每个岗位的中位数位置的范围,并且按岗位升序排序,结果如下:解释:第1行表示C++岗位的中位数位置范围为[2,2],也就是2。因为C++岗位总共3个人,是奇数,所以中位数位置为2。第2行表示Java...
  • 1.一个序列的中位数(c++)

    千次阅读 2019-07-12 02:45:36
    2、能够得到这个序列的中位数 中位数定义: #1.如果元素个数是偶数,返回已排序序列最中间的两个数字的平均数 #2.如果元素个数是奇数,返回已排序序列中间那个数 二、分析 能够看到该题的标记是hard,显...
  • c++求数组的最小(大)的n位数

    千次阅读 2015-06-19 08:31:20
    #include using namespace std;class MaxHash { public: MaxHash(int n) { data = new int[n]; size = n; } void Insert(int a[], int n) { int i = 0;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 718
精华内容 287
关键字:

c++求中位数

c++ 订阅