当前位置:  编程技术>c/c++/嵌入式

C++ 基本算法 冒泡法、交换法、选择法、实现代码集合

    来源: 互联网  发布时间:2014-10-12

    本文导语:  1.冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 代码如下:#include void BubbleSort(int* pData,int Count) { int iTemp; for(int i=1;i=i;j--) {if(pData[j]8,7,10,9->7,8,10,9(交换2次) 第二轮:7,8,10,9->...

1.冒泡法:


这是最原始,也是众所周知的最慢的算法了。
他的名字的由来因为它的工作看来象是冒泡:

代码如下:

#include
void BubbleSort(int* pData,int Count)
{
int iTemp;
for(int i=1;i=i;j--) {
if(pData[j]8,7,10,9->7,8,10,9(交换2次)
第二轮:7,8,10,9->7,8,10,9->7,8,10,9(交换0次)
第一轮:7,8,10,9->7,8,9,10(交换1次) 循环次数:6次交换次数:3次 上面我们给出了程序段,
现在我们分析它:这里,影响我们算法性能的主要部分是循环和交换,显然,次数越多,性能就越差。
从上面的程序我们可以看出循环的次数是固定的,为1+2+...+n-1。写成公式就是1/2*(n-1)*n。
现在注意,我们给出O方法的定义: 若存在一常量K和起点n0,使当n>=n0时,有f(n)7,8,9,10(交换1次)
循环次数:6次
交换次数:3次

从运行的表格来看,交换几乎和冒泡一样糟。事实确实如此。循环次数和冒泡一样也是1/2*(n-1)*n,所以算法的复杂度仍然是O(n*n)。由于我们无法给出所有的情况,所以只能直接告诉大家他们在交换上面也是一样的糟糕(在某些情况下稍好,在某些情况下稍差)。p#副标题#e#

3.选择法:

现在我们终于可以看到一点希望:选择法,这种方法提高了一点性能(某些情况下)这种方法类似我们人为的排序习惯:从数据中选择最小的同第一个值交换,在从省下的部分中选择最小的与第二个交换,这样往复下去。

代码如下:

#include
void SelectSort(int* pData,int Count)
{
int iTemp;
int iPos;
for(int i=0;i(iTemp=8)7,10,8,9->(iTemp=8)7,8,10,9(交换1次)
第一轮:7,8,10,9->(iTemp=9)7,8,9,10(交换1次)
循环次数:6次
交换次数:3次
遗憾的是算法需要的循环次数依然是1/2*(n-1)*n。所以算法复杂度为O(n*n)。
我们来看他的交换。由于每次外层循环只产生一次交换(只有一个最小值)。所以f(n)

    
 
 

您可能感兴趣的文章:

  • c++实现MD5算法代码示例
  • 文本压缩算法C++实现 Golden Huffman
  • 【help】哪里有封装好的RSA算法C++类和C源代码以及例子程序
  • C++实现查找中位数的O(N)算法和Kmin算法
  • 用C或C++编程,模拟可变分区存储管理且首次适应的算法实现存储器的分配与回收
  • C++实现顺序排序算法简单示例代码
  • C++实现汉诺塔算法经典实例
  • C++插入排序算法实例
  • C++选择排序算法实例
  • C++冒泡排序算法实例
  • C++实现N个骰子的点数算法
  • C++泛型算法的一些总结
  • C++归并排序算法实例
  • C++ 冒泡排序数据结构、算法及改进算法
  • C++算法之海量数据处理方法的总结分析
  • C++实现矩阵原地转置算法
  • C++基本算法思想之穷举法
  • 利用C++的基本算法实现十个数排序
  • C++基本算法思想之递推算法思想
  • 采用C++实现区间图着色问题(贪心算法)实例详解
  • C++堆排序算法的实现方法
  • <<大话数据结构>>中冒泡排序算法改进
  • php冒泡排序算法实现代码
  • python冒泡排序算法的实现代码
  • java冒泡排序算法代码
  • c#冒泡排序算法示例
  • 又一个PHP实现的冒泡排序算法分享
  • 冒泡排序算法原理及JAVA实现代码
  • php排序算法 PHP版快速排序与冒泡排序
  • linux iis7站长之家
  • c# 冒泡排序算法(Bubble Sort) 附实例代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用java做一个“求集合子集的”算法。
  • Java常用排序算法及性能测试集合
  • 二叉树常用算法(求总节点个数和叶子节点个数)
  • 那位高人有任务分配问题的禁忌搜索算法、模拟退火算法的算法实现程序啊
  • boost unordered_map和std::list相结合的实现LRU算法
  • 求对称加密DES算法与非对称加密RSA算法!(可用)
  • 中文网页快速去重算法研究
  • 深入串的模式匹配算法(普通算法和KMP算法)的详解
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • 谁能给出一个最快最高效的求素数的算法?(高分求算法)
  • 广告系统中weak-and算法原理及编码验证
  • 谁有这样的算法:给定两个区域,用直线或折线来连接,以及移动其中线段的算法。
  • c语言实现MD5算法完整代码示例
  • 算法之排序算法的算法思想和使用场景总结
  • MD5算法的C语言实现
  • 【算法】扑克发牌算法实现
  • php加密算法之实现可逆加密算法和解密分享
  • PHP中对各种加密算法、Hash算法的速度测试对比代码
  • 关于加密算法的效率问题
  • 哈希算法计算 Generic Hash and HMAC Program
  • python算法学习之桶排序算法实例(分块排序)
  • 求高效算法
  • 一个“最短寻道优先(SSTF)磁盘调度算法”的问题:




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3