精华内容
下载资源
问答
  • C++实现蓝牙bluetooth通讯功能,基础功能实现,源代码,
  • C++实现HTTP请求

    2017-08-21 10:11:49
    C++实现HTTP POST GET请求
  • 轻量级C++实现的httpserver和httpclient,给予mongoose,代码量很小,可以方便嵌入到自己的项目中,为C++项目添加http的功能,抛弃libcurl这种重型库
  • HTTP Client C++实现

    热门讨论 2016-01-15 15:31:49
    CHttpClient.rar HTTP Client C++实现
  • C++实现简单Socket通信

    2016-11-22 14:30:26
    C++实现简单Socket通信,最基本的代码。可以作为初始学习socket功能使用,仅供参考...................
  • 图像扭曲C++实现

    热门讨论 2017-04-17 21:04:24
    用来图像数据增强,进行图像扭曲,从而生成更多样本
  • 卷积神经网 CNN C++实现 基于 mnist 数据 里面已经包含数据集
  • RSA算法C++实现源码

    2016-11-01 15:40:00
    RSA算法C++实现源码
  • 测试方式(依次在浏览器输入一下内容进行不同情形的测试): 127.0.0.1:9988 ...2、CGI实现不够科学,可以尝试使用FASTCGI 3、不支持https 4、不支持回应chunked数据 感兴趣的同学可以继续完善相关功能.
  • C++实现mqtt协议

    热门讨论 2015-09-03 16:01:16
    C++实现mqtt协议:官网的mqtt c++实现,个觉得写得非常棒!
  • 具体介绍请参考http://www.cnblogs.com/yabin/p/6426849.html
  • OPC客户端应用程序的C++实现

    热门讨论 2015-05-09 06:24:51
    OPC客户端应用程序的C++实现;在Visual C++或C++BUILDER环境中实现OPC客户应用程序,首先必须从OPC国际基金会官方网站下载OPC头文件("opcda_i.c"、"opcda.h" 、"opccomn_i.c"、"opccomn.h"),并在Visual C++工程的...
  • C++实现朴素贝叶斯分类器

    热门讨论 2016-03-17 10:59:58
    C++实现朴素贝叶斯分类器, 代码干净, 整洁, 有示例, 有注释, 具有良好的封装性, 可直接迁移使用
  • 随机森林C++实现

    热门讨论 2015-07-03 19:43:08
    随机森林的C++实现,附实现PPT和实验报告声明
  • c++ 实现FFT和IFFT

    2015-03-28 14:34:07
    c++ 实现傅里叶变换FFT和傅里叶逆变换IFFT
  • SHA-256算法的C++实现及demo
  • C++实现HTTP处理类

    千次下载 热门讨论 2015-01-15 17:35:40
    HTTP协议库有两个版本,一个是基于WININET,一个则是使用socket实现的。 可以支持POST 、GET请求,断点下载、重定向下载、下载进度回调,不支持HTTPS。
  • c++ 实现matlab smooth 函数

    热门讨论 2014-11-12 19:46:35
    c++平滑一维数组数据,原理与Matlab smooth函数
  • ONVIF客户端最新C++实现

    热门讨论 2015-10-20 17:31:25
    ONVIF客户端最新C++实现,实现发现设备、获取视频uri、云控等
  • 五子棋大作业(C++实现

    千次下载 热门讨论 2016-03-04 15:31:58
    2、采用黑屏字符输入输出实现UI 3、采用打分方法实现AI 4、棋盘大小为15*15,棋盘将显示相应的行列号(A-O) 5、棋子有两种颜色黑和白,代表着对弈的双方,棋子放在棋盘行列交叉处,惯例黑棋先下。 6、黑白任一方先...
  • c++实现关联规则Apriori算法

    热门讨论 2014-10-30 12:18:35
    Apriori算法的c++实现vs2010也适用
  • C++实现的FTP服务器

    热门讨论 2013-12-30 17:37:36
    在windows平台下使用C++,MFC框架实现了FTP协议的服务端程序。支持客户端的文件下载,上传,删除等常用FTP命令的响应。使用多线程技术,允许多个客户端同时连接。实时记录显示服务器和客户端交互的状态变化。支持...
  • C++实现简单的MVC框架

    热门讨论 2014-06-19 12:06:45
    C++实现简单的MVC框架
  • c++实现查询天气预报

    热门讨论 2013-11-21 23:25:04
    c++实现查询天气预报,简单实现!
  • C++ 实现 3DES加解密Base64加解密

    热门讨论 2016-01-05 17:57:37
    例子代码,用c++实现了先用3DES进行内容的加密再用Base64加密输出,和先用base64解密再用3DES解密输出两个例子,完成了网址常用的加解密输出.代码是用vs2013实现的。
  • AES加密算法(C++实现,附源码)

    千次下载 热门讨论 2014-04-24 16:15:10
    AES加密算法(C++实现,附源码) 更多免费资源: http://cleopard.download.csdn.net
  • 图解快速排序(C++实现

    万次阅读 多人点赞 2019-03-05 10:25:18
    参考大话数据结构这本书对快速排序的讲解,本文作一个梳理,并在最后给出快排的C++实现代码。 假设我们现在对“612 79345 108”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到...

           参考大话数据结构这本书对快速排序的讲解,本文作一个梳理,并在最后给出快排的C++实现代码。

           假设我们现在对“6  1  2 7  9  3  4  5 10  8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边,类似下面这种排列。

           3  1  2 5  4  6  9 7  10  8

            在初始状态下,数字6在序列的第1位。我们的目标是将6挪到序列中间的某个位置,假设这个位置是k。现在就需要寻找这个k,并且以第k位为分界点,左边的数都小于等于6,右边的数都大于等于6。想一想,你有办法可以做到这点吗?

            给你一个提示吧。请回忆一下冒泡排序,是如何通过“交换”,一步步让每个数归位的。此时你也可以通过“交换”的方法来达到目的。具体是如何一步步交换呢?怎样交换才既方便又节省时间呢?先别急着往下看,拿出笔来,在纸上画画看。我高中时第一次学习冒泡排序算法的时候,就觉得冒泡排序很浪费时间,每次都只能对相邻的两个数进行比较,这显然太不合理了。于是我就想了一个办法,后来才知道原来这就是“快速排序”,请允许我小小的自恋一下(^o^)。

            方法其实很简单:分别从初始序列“6  1  2 7  9  3  4  5 10  8”两端开始“探测”。先从右往左找一个小于6的数,再从左往右找一个大于6的数,然后交换他们。这里可以用两个变量i和j,分别指向序列最左边和最右边。我们为这两个变量起个好听的名字“哨兵i”和“哨兵j”。刚开始的时候让哨兵i指向序列的最左边(即i=1),指向数字6。让哨兵j指向序列的最右边(即j=10),指向数字8。

                                                             

          首先哨兵j开始出动。因为此处设置的基准数是最左边的数,所以需要让哨兵j先出动,这一点非常重要(请自己想一想为什么)。哨兵j一步一步地向左挪动(即j--),直到找到一个小于6的数停下来。接下来哨兵i再一步一步向右挪动(即i++),直到找到一个数大于6的数停下来。最后哨兵j停在了数字5面前,哨兵i停在了数字7面前。

                              

           现在交换哨兵i和哨兵j所指向的元素的值。交换之后的序列如下。

            6  1  2  5  9 3  4  7  10  8

            到此,第一次交换结束。接下来开始哨兵j继续向左挪动(再友情提醒,每次必须是哨兵j先出发)。他发现了4(比基准数6要小,满足要求)之后停了下来。哨兵i也继续向右挪动的,他发现了9(比基准数6要大,满足要求)之后停了下来。

                                            

    此时再次进行交换,交换之后的序列如下。

            6  1  2 5  4  3  9  7 10  8

            第二次交换结束,“探测”继续。哨兵j继续向左挪动,他发现了3(比基准数6要小,满足要求)之后又停了下来。哨兵i继续向右移动,糟啦!此时哨兵i和哨兵j相遇了,哨兵i和哨兵j都走到3面前。说明此时“探测”结束。我们将基准数6和3进行交换。交换之后的序列如下。

            3  1  2  5  4  6  9 7  10  8

                                                  

            到此第一轮“探测”真正结束。此时以基准数6为分界点,6左边的数都小于等于6,6右边的数都大于等于6。回顾一下刚才的过程,其实哨兵j的使命就是要找小于基准数的数,而哨兵i的使命就是要找大于基准数的数,直到i和j碰头为止。

            OK,解释完毕。现在基准数6已经归位,它正好处在序列的第6位。此时我们已经将原来的序列,以6为分界点拆分成了两个序列,左边的序列是“3  1 2  5  4”,右边的序列是“9  7  10  8”。接下来还需要分别处理这两个序列。因为6左边和右边的序列目前都还是很混乱的。不过不要紧,我们已经掌握了方法,接下来只要模拟刚才的方法分别处理6左边和右边的序列即可。现在先来处理6左边的序列现吧。

            左边的序列是“3  1  2 5  4”。请将这个序列以3为基准数进行调整,使得3左边的数都小于等于3,3右边的数都大于等于3。好了开始动笔吧。

            如果你模拟的没有错,调整完毕之后的序列的顺序应该是。

                    2  1  3  5  4

            OK,现在3已经归位。接下来需要处理3左边的序列“2 1”和右边的序列“5 4”。对序列“2 1”以2为基准数进行调整,处理完毕之后的序列为“1 2”,到此2已经归位。序列“1”只有一个数,也不需要进行任何处理。至此我们对序列“2 1”已全部处理完毕,得到序列是“1 2”。序列“5 4”的处理也仿照此方法,最后得到的序列如下。

               1  2  3 4  5  6 9  7  10  8

            对于序列“9  7  10  8”也模拟刚才的过程,直到不可拆分出新的子序列为止。最终将会得到这样的序列,如下。

               1  2  3 4  5  6  7  8 9  10

            到此,排序完全结束。细心的同学可能已经发现,快速排序的每一轮处理其实就是将这一轮的基准数归位,直到所有的数都归位为止,排序就结束了。下面上个霸气的图来描述下整个算法的处理过程。

                             

           后注:回到刚开始的时候提的问题,当选取最左边的数字为基准数的时候,为什么要先从右边开始搜索? 要回答为什么先从右边开始搜索,不妨我们先从左边开始搜索。比如说“6  1  2 7  9  3  4  5 10  8”的第一轮,我们先让i从左边开始,遇到小于等于6的继续走,大于6的停下,于是i停在了7的位置;再让j从右边走,小于6的时候停下,于是j停在5的位置;这个时候i < j 于是7和5交换位置变成“6  1  2  5  9  3  4  7  10  8”;继续上面的操作,9和4交换,变成“6  1  2  5  4  3  9  7  10  8”,继续,i先走,停在了9的位置,这个时候i == j了,那么这一轮就比较完了,最后需要交换i和base位置的数(基准数归位),这个时候发生了什么??6与9交换,变成了下面的序列:“9  1  2  5  4  3  6  7  10  8”,这个序列并不是完成了一轮处理之后,基准数左边的都比基准数小,右边的都比它大。所以这样先从左边开始搜索得不到正确结果的。

           因此,我们可以得到下面的结论:当基准数选择最左边的数字时,那么就应该先从右边开始搜索;当基准数选择最右边的数字时,那么就应该先从左边开始搜索。不论是从小到大排序还是从大到小排序!

            快速排序之所比较快,因为相比冒泡排序,每次交换是跳跃式的。每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离就大的多了。因此总的比较和交换次数就少了,速度自然就提高了。当然在最坏的情况下,仍可能是相邻的两个数进行了交换。因此快速排序的最差时间复杂度和冒泡排序是一样的都是O(N2),它的平均时间复杂度为O(NlogN)。

    C++代码实现(从小到大排序)

    //快速排序(从小到大)
    void quickSort(int left, int right, vector<int>& arr)
    {
    	if(left >= right)
    		return;
    	int i, j, base, temp;
    	i = left, j = right;
    	base = arr[left];  //取最左边的数为基准数
    	while (i < j)
    	{
    		while (arr[j] >= base && i < j)
    			j--;
    		while (arr[i] <= base && i < j)
    			i++;
    		if(i < j)
    		{
    			temp = arr[i];
    			arr[i] = arr[j];
    			arr[j] = temp;
    		}
    	}
    	//基准数归位
    	arr[left] = arr[i];
    	arr[i] = base;
    	quickSort(left, i - 1, arr);//递归左边
    	quickSort(i + 1, right, arr);//递归右边
    }

    从大到小排序(稍稍改动而已)

    //快速排序(从大到小)
    void quickSort(int left, int right, vector<int>& arr)
    {
    	if(left >= right) //递归边界条件
    		return;
    	if(left < 0 || right >= arr.size())
    	{
    		cout << "error args! array bound." << endl;
    		return;
    	}//非法输入判断,防止数组越界
    	int i, j, base, temp;
    	i = left, j = right;
    	base = arr[left];  //取最左边的数为基准数
    	while (i < j)
    	{
    		while (arr[j] <= base && i < j)
    			j--;
    		while (arr[i] >= base && i < j)
    			i++;
    		if(i < j)
    		{
    			temp = arr[i];
    			arr[i] = arr[j];
    			arr[j] = temp;
    		}
    	}
    	//基准数归位
    	arr[left] = arr[i];
    	arr[i] = base;
    	quickSort(left, i - 1, arr);//递归左边
    	quickSort(i + 1, right, arr);//递归右边
    }

     

    展开全文
  • 模拟鼠标单击、双击 C++实现

    热门讨论 2013-12-21 21:15:39
    模拟鼠标单击、双击 C++实现,欢迎大家下载!模拟鼠标单击、双击 C++实现,欢迎大家下载!模拟鼠标单击、双击 C++实现,欢迎大家下载!模拟鼠标单击、双击 C++实现,欢迎大家下载!模拟鼠标单击、双击 C++实现,欢迎...
  • http的post发送接收数据以及xml解析:用winInet来实现http的post请求接收数据,解析xml的数据
  • C++实现SVM分类算法

    热门讨论 2011-10-18 18:13:18
    SVM有如下特征:(1)SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数...本代码通过C++实现SVM的分类算法,并通过SSE实现最优解的快速计算,学习SVM的同学可以参考一下,如有不足,请指正。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,417,032
精华内容 566,812
关键字:

c++实现

c++ 订阅
友情链接: stm32PC485test.zip