#include <iostream>
using namespace std;
void BubbleSort(int* pData,int Count)//冒泡排序
{
int iTemp,i,j;
for (i = 1;i < Count;i++)
{
for (j = Count - 1;j >= i;j--)
{
if (pData[j] < pData[j-1])
{
iTemp = pData[j-1];
pData[j-1]=pData[j];
pData[j]=iTemp;
}
}
}
}
void main()
{
int i,data[] = {10,9,8,7,6,5,4};
BubbleSort(data,7);
for (i = 0;i<7;i++)
{
cout<<data[i]<<" ";
}
cout<<"\n";

}

#include <iostream>
using namespace std;
void Cocktail(int* arr, int size)//鸡尾酒排序
{
int i,j,temp,tail = size - 1;
for (i = 0;i<tail;)
{
for (j = tail;j > i;j--)
{
if(arr[j] < arr[j-1])
{
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
i++;
for (j = i;j < tail;j++)
{
if (arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
tail--;
}
}
void main()
{
int i,arr[] = {1,3,5,7,6,56,76,122,3};
Cocktail(arr,sizeof(arr)/sizeof(int));
for (i = 0;i<9;i++)
{
cout<<arr[i]<<" ";
}
cout<<"\n";
}

#include <iostream>
using namespace std;
void SelectSort(int* pData,int Count)//选择排序
{
int i,j,iTemp,iPos;
for (i = 0;i<Count-1;i++)
{
iTemp =pData[i];
iPos = i;
for(j=i+1;j<Count;j++)
{
if (pData[j]<iTemp)
{
iTemp = pData[j];
iPos = j;
}
}
pData[iPos] = pData[i];
pData[i] = iTemp;
}
}
void main()
{
int i,data[] = {10,9,8,7,6,5,4};
SelectSort(data,7);
for (i=0;i<7;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}

#include <iostream>
using namespace std;
void InsertSort(int* pData,int Count)//插入排序
{
int i,iPos,iTemp;
for (i=1;i<Count;i++)
{
iTemp = pData[i];
iPos = i-1;
while ((iPos>=0)&&(iTemp<pData[iPos]))
{
pData[iPos+1] =pData[iPos];
iPos--;
}
pData[iPos+1] = iTemp;
}
}
void main()
{
int i,data[] = {10,9,8,7,6,5,4};
InsertSort(data,7);
for (i=0;i<7;i++)
{
cout<<data[i]<<" ";
}
cout<<"\n";
}

#include <iostream>
using namespace std; 
void merge(int *pData,int p,int q,int r)//归并排序
{
int i,k;
int begin1,end1,begin2,end2;
int *temp=new int[r-p+1];
begin1=p; 
end1=q;
begin2=q+1;
end2=r;
k=0;
while(begin1<=end1 && begin2<=end2)
{
if (pData[begin1]<pData[begin2])
{
temp[k++]=pData[begin1++];
}
else
{
temp[k++]=pData[begin2++];
}
}
while(begin1<=end1)
{
temp[k++]=pData[begin1++];
}
while (begin2<=end2)
{
temp[k++]=pData[begin2++];
}
for (i=0;i<(r-p+1);i++)
{
pData[p+i]=temp[i];
}
delete []temp;
}

void merge_sort(int *pData,int first,int last)
{
int mid=0;
if (first<last)
{
mid=(first+last)/2;
merge_sort(pData,first,mid);
merge_sort(pData,mid+1,last);
merge(pData,first,mid,last);
}
}
void main()
{
int i,array[] ={1,5,2,6,3,10,9,18};
merge_sort(array,0,7);
for (i=0;i<8;i++)
{
cout<<array[i]<<" ";
}
}

int Partition(int *pData,int low,int high)//快速排序
{
int i = low;
int j = high + 1;
int temp = pData[low];
while(true){
while(pData[++i]<temp&&i<high);
while(pData[--j]>temp);//循环跳出后,下标为j的数组值一定小于等于temp
if(i>=j)
break;
if(i<j){
int temp = pData[i];
pData[i] = pData[j];
pData[j] = temp;
}
}
pData[low] = pData[j];
pData[j] = temp;
return j;
}

void QuickSort(int *pData,int low,int high)
{
if(low<high)
{
int tx = Partition(pData,low,high);
QuickSort(pData,low,tx - 1);
QuickSort(pData,tx+1,high);
}
}

int main()
{
int i,pData[17]={23,32,41,55,86,7,37,100,5,9,3,4,1,8,2,6,10}; 
cout<<endl;
QuickSort(pData,0,16);
for(i = 0;i<17;++i)
cout<<pData[i]<<' ';
return 0;
}

冒泡、鸡尾酒、选择、插入、归并、快速排序的C++程序相关推荐

  1. C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划

    C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划 博文末尾支持二维码赞赏哦 _ github 章3 Stack栈 和 队列Queue= ...

  2. 常见经典排序算法学习总结(插入、shell、冒泡、选择、归并、快排等)

    博主在学习过程中深感基础的重要,经典排序算法是数据结构与算法学习过程中重要的一环,这里对笔试面试最常涉及到的7种排序算法(包括插入排序.希尔排序.选择排序.冒泡排序.快速排序.堆排序.归并排序)进行了 ...

  3. 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序...

    http://www.blogjava.net/javacap/archive/2007/12/13/167364.html 为了便于管理,先引入个基础类: package algorithms; / ...

  4. 面试必备:冒泡,选择,插入,希尔,归并,快速排序大合集

    目录 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 在很多大厂的面试中,算法是最基本的要求,像基础的算法,冒泡,选择,插入等,基本上都会问到. 很多同学往往忽略了其重要程度,只注重编程语 ...

  5. C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)

    排序算法分类 内部排序算法又分为基于比较的排序算法和不基于比较的排序算法,其分类如下: 比较排序:   直接插入排序    希尔排序 (插入)  冒泡排序     快速排序  (交换) 直接选择排序  ...

  6. Java五大排序(冒泡,选择,插入,快速,归并)

    冒泡,选择,插入,快速,归并这五个排序应该是所有编程语言初学者所遇到过的,可能在实际的编程应用中不会遇到,但对于初学者而言能起到锻炼编程思维的作用.废话不多说,下面进入正题. 冒泡排序 冒泡排序的就是 ...

  7. 【Java】七大排序(冒泡、选择、插入、快排、归并、堆排、希尔排序)

    一.相关归纳总结 1.时间复杂度 O(n^2):冒泡排序,选择排序,插入排序 O(log2n):快速排序,希尔排序,堆排序,归并排序 2.空间复杂度 O(1):插入排序.冒泡排序,选择排序,堆排序,希 ...

  8. php四种基础算法:冒泡,选择,插入和快速排序法

    许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西 .但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要 ...

  9. 插入,冒泡,选择,快速,归并,堆排序,java 泛型实现

    2019独角兽企业重金招聘Python工程师标准>>> package keepthinker.sort;import java.util.ArrayList; import jav ...

  10. 常用排序算法的c++实现(冒泡,选择,插入,堆,shell,快速,归并 )与sort()对比 - coder_xia的专栏 - 博客频道 - CSDN.NET...

    常用排序算法的c++实现(冒泡,选择,插入,堆,shell,快速,归并 )与sort()对比 - coder_xia的专栏 - 博客频道 - CSDN.NET 常用排序算法的c++实现(冒泡,选择,插 ...

最新文章

  1. 理解学习this指向问题
  2. git clone 一些简单笔记
  3. js 停止事件冒泡 阻止浏览器的默认行为
  4. ubuntu nginx php7,ubuntu 16 安装php7+nginx
  5. 程序员要记住的几条建议
  6. [cocos2d]修改富文本文本和高度
  7. [The Diary] 11.9 The Final Day
  8. bada 2D游戏编程——开篇说明
  9. 读书笔记—中国跑步指南
  10. colorbox加载ajax调用的html页面,ColorBox
  11. Region Proposal by Guided Anchoring论文解读
  12. 华为系统更新后通知栏变大了_华为EMUI又有新变动,通知栏新增多功能,流畅度堪比氢OS!...
  13. 请简述Filter生命周期的各个阶段。
  14. 通过mtd读写flash_【转】 Linux下读写FLASH驱动——MTD设备分析
  15. JS基础-数组的常用方法(ES3)
  16. UNITY 使用代码更换地形中草的贴图
  17. 云托管,边缘物理计算托管物理计算,你所需要了解的……
  18. 【Python】浮点数精度问题(包含解决方案)
  19. 研究一下Chocolatey
  20. volatile 关键字详解

热门文章

  1. android 协程,Android 上的 Kotlin 协程
  2. idea git 密码修改
  3. java等待5秒_Java并发编程-主线程等待子线程解决方案
  4. zabbix4.2学习笔记系列
  5. Vim引申以及Linux下彩色进度条实现
  6. c++ builder firemonkey 实现填充椭圆
  7. Python3 内建模块 hashlib、itertools、HTMLParser、urllib
  8. 去除UINavigationBar的下边框
  9. 毕业生该不该做软件开发这一行?
  10. 配置EditPlus