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

C++实现各种排序算法类汇总

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

    本文导语:  C++可实现各种排序算法类,比如直接插入排序、折半插入排序、Shell排序、归并排序、简单选择排序、基数排序、对data数组中的元素进行希尔排序、冒泡排序、递归实现、堆排序、用数组实现的基数排序等。 具体代码如下: ...

C++可实现各种排序算法类,比如直接插入排序、折半插入排序、Shell排序、归并排序、简单选择排序、基数排序、对data数组中的元素进行希尔排序、冒泡排序、递归实现、堆排序、用数组实现的基数排序等。

具体代码如下:

#ifndef SORT_H
#define SORT_H
#include 
#include 
using namespace std;
// 1.直接插入排序
template
void InsertSort(ElemType data[], int n);
// 2.折半插入排序
template
void BInsertSort(ElemType data[], int n);
// 3.Shell排序
// 对data数组中的元素进行希尔排序,n为该数组大小
// increments为增量序列,incrementsLength为增量序列的大小
template
void ShellSort(ElemType data[],int increments[], int n, int incrementsLength);
// 1.Bubble Sort
template
void BubbleSort(ElemType data[], int n);
// 2.快速排序
template
void QuickSort(ElemType data[], int n);
////////////////// 
// Merge Sort
////////////////// 
// 归并排序
template
void MergeSort(ElemType data[],int n);
template
void MergeSortNonRecursion(ElemType data[], int n);
////////////////// 
// Selection sort
////////////////// 
// 简单选择排序
template
void SelectionSort(ElemType data[], int n);
// 堆排序
template
void HeapSort(ElemType data[],int n);
///////////////
// Radix Sort
///////////////
// 静态链表结点
const int DIGITS = 10;
const int RADIX = 10;
class SLList;
ostream& operator= increments[k]; j -= increments[k]){
        if ( tmp >= data[j - increments[k]])
          break; 
        data[j] = data[j - increments[k]]; 
      }
      data[j] = tmp;
    }
  }
}
// 冒泡排序
template
void BubbleSort(ElemType data[], int n)
{
 int lastSwapIndex = n - 1; // 用于记录最后一次交换的元素下标
 int i, j;
  for (i = lastSwapIndex; i > 0;i = lastSwapIndex)
 {
 lastSwapIndex = 0;
 for (j = 0; j < i; j++)
  if (data[j] > data[j + 1]){
        Swap( data[j],data[j + 1]);
  lastSwapIndex = j;
  }
 }
}
//快速排序
template
int Partition(ElemType data[] , int low , int high)  
{  
  ElemType pivot = data[low];  
  while (low < high){  
    while (low < high && data[high] >= pivot) 
  high--;  
    data[low] = data[high]; 
    while (low < high && pivot >= data[low]) 
  low++;  
    data[high] = data[low];  
  }  
  data[low] = pivot;  
  return low;  
}  
template
void QuickSort(ElemType data[], int begin, int end)
{ 
  if (begin >= end) 
 return;
  int pivot = Partition(data , begin , end);  
  QuickSort(data , begin , pivot - 1);  
  QuickSort(data , pivot + 1, end);     
}
template
void QuickSort(ElemType data[], int n)
{
  if (n < 2)
    return;
  QuickSort(data, 0, n-1);
}
// 将数组data中,[lptr...rptr-1][rptr...rightEnd]两部分的元素进行合并
// tmpArr为合并时的辅存空间
template
void Merge(ElemType data[], ElemType tmpArr[], int lptr, int rptr, int rightEnd)
{
  int leftEnd = rptr - 1;
  int ptr,i;
  ptr = i = lptr;
  while (lptr 

    
 
 

您可能感兴趣的文章:

  • Base64编码原理详解及c++编码解码实现
  • 我实现了个J2EE技术的服务器,支持TCP、UDP和数据库,由于性能的原因,需要改为C或C++实现,我是C、C++新手,我该如何入手呢?看什么样的
  • c++实现MD5算法代码示例
  • java 与 C++ 实现后绑定的方法
  • c++通用模板类(template class)定义实现详细介绍
  • Qt实现的C++框架 qtioccontainer
  • 用C或C++实现主存的分配与回收
  • 在linux系统上,如何用C++实现获取和设置系统时间?
  • 文本压缩算法C++实现 Golden Huffman
  • C++标准库实现 libc++
  • C++的XMLRPC实现 XMLRPC++
  • Java/JavaScript API 的 C++ 实现 libj
  • c++ 连接两个字符串实现代码 实现类似strcat功能
  • c++在unix中如何实现CString的方法?或者说有没有替换CString的类?
  • 请问:java中如何实现C++中的sizeof()方法?
  • 用C或C++编程,模拟可变分区存储管理且首次适应的算法实现存储器的分配与回收
  • vim中如何实现c++代码编写的自动格式化和语法高亮的功能?
  • C++实现CreatThread函数主线程与工作线程交互的方法
  • 请教为什么在C++编译通过并实现的程序,在linux下就会出错
  • linux下c++怎样实现回调(CALLBACK)函数?
  • 在linux下如何用c++实现建立一个文件夹
  • boost unordered_map和std::list相结合的实现LRU算法
  • 那位高人有任务分配问题的禁忌搜索算法、模拟退火算法的算法实现程序啊
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • 【算法】扑克发牌算法实现
  • c语言实现MD5算法完整代码示例
  • C++实现查找中位数的O(N)算法和Kmin算法
  • MD5算法的C语言实现
  • 有没谁对pagerank算法实现有了解?
  • 有没有函数实现压缩算法?
  • 最短路径算法实现 k-shortest-paths
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教如何用b shell/awk实现汇总
  • C#实现快捷键的几种常用方法汇总
  • Oracle实现分页查询的SQL语法汇总
  • sql server实现字符串拆分函数split的方法汇总
  • C语言实现顺序表基本操作汇总
  • Java实现时间动态显示方法汇总
  • VC运用OPENGL加载BMP纹理图的实现方法汇总
  • 基于C++实现的各种内部排序算法汇总
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • 求在freebsd+Squid下实现pc上网的透明代理的实现方法!给出具体配置方法的高分谢!
  • iphone cocos2d 精灵的动画效果(图片,纹理,帧)CCAnimation实现
  • linux下如实现与window下的驱动器实现文件共享??
  • c语言判断某一年是否为闰年的各种实现程序代码
  • qt如何实现:操作键盘实现数据的滚动?
  • html<pre>标签自动换行实现方法
  • 我想用APPLET实现读取客户端的图片文件,该如何实现?
  • java tomcat实现Session对象的持久化原理及配置方法介绍
  • PING是用TCP,还是用UDP来实现的?或是采用其它协议实现的?




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

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

    浙ICP备11055608号-3