【C++】冒泡排序、插入排序、快速排序
#include<iostream>
using namespace std;
void BubbleSort(int *a,int istart,int len)//冒泡排序
{
//a为数组,len为数组长度,对a[istart]~a[len-1]进行排序,小浮大沉
//从后面往前两两比较,小的上浮,直到最顶端a[istart]中存放的是剩余数组中最小的数。
for(int i=len;i>istart+;i--)
{
if(a[i-]>a[i-])
{
int temp=a[i-];
a[i-]=a[i-];
a[i-]=temp;
}
}
if(istart<len-)BubbleSort(a,istart+,len);
} void InsertionSort(int *a,int ilast,int len)//插入排序
{
//取元素a[ilast+1]插入到a[0]~a[ilast]中,从a[ilast]开始往上一个个比较,如果大小顺序不妥,就对调下它们的数值。
int i=ilast+;
int temp=;
while (a[i]<a[i-])
{
temp=a[i-];
a[i-]=a[i];
a[i]=temp;
i--;
if(i<)break;
}
if(ilast<len-)InsertionSort(a,ilast+,len);
} void QuickSort(int *a,int istart,int ilast)//快速排序
{ //对数组a中从a[istart]~a[ilast]的所有元素进行排序
//1.取第一个数a[istart]做基准,则a[istart]就留出了一个空位置,从后往前找,找到最近一个小于基数的数值(a[j])存入前面的空位置a[i]
//2.从前往后找,找到最近一个大于基数的数值存入a[j],则余出来的空位置又假定为a[i]
//3.当i超过j(即i>=j时)结束该轮排序
//4.重复以上步骤
int BaseNum=a[istart];
int i=istart,j=ilast;
int k=;
while ()
{
while(a[j]>BaseNum && i<j)j--;
a[i]=a[j];
i++;
if (i>=j)
{
a[j]=BaseNum;
k=j;
break;
}
while(a[i]<BaseNum && i<j)i++;
a[j]=a[i];
if (i>=j)
{
a[j]=BaseNum;
k=j;
break;
}
j--;
}
if(istart<k)QuickSort(a,istart,k);
if(k+<ilast)QuickSort(a,k+,ilast);
}
void main()
{
int a[]={,,,,,,,,};
int len=sizeof(a)/sizeof(int);
//BubbleSort(a,0,len);
//InsertionSort(a,0,len);
QuickSort(a,,len-);
for(int i=;i<len;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
} //注:本程序的快速排序虽然基本实现功能,但编写凌乱,留待以后改进
【C++】冒泡排序、插入排序、快速排序的更多相关文章
- JavaScript实现冒泡排序、快速排序、插入排序
JavaScript实现冒泡排序.快速排序.插入排序 时间:2014-01-09 18:05:51 来源: 作者:胡晗 冒泡排序的基本思想:所谓冒泡就是泡泡一个一个往上冒,让体积最轻的泡泡浮在最上 ...
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
2013-08-22 14:55:33 八大排序方法汇总(选择排序-简单选择排序.堆排序,插入排序-简单插入排序.shell排序,交换排序-冒泡排序.快速排序,归并排序,计数排序). 插入排序还可以和 ...
- 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)
不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...
- Python八大算法的实现,插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。
Python八大算法的实现,插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得 ...
- 交换排序:冒泡排序vs快速排序
在开发的过程中, 经常会遇到集合排序, 那么一般情况下, 我们都是使用list.OrderBy()的方式来排序, 也无需关注到里面算法的实现是个什么样子. 正好这几天准备回顾一下数据结构与算法. 首先 ...
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现) 程序员必知的8大排序(三)-------冒 ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- PHP描述冒泡排序和快速排序算法
使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组.写一个二维数组排序算法函数,能够具有通用 ...
- python 实现冒泡排序与快速排序 遇到的错误与问题
今天看了兄弟连php里面的冒泡排序与快速排序,想了下应该可以用python实现. 冒泡排序函数: def mysort(x): len1 = len(x) for i in range(len1-1, ...
- js 冒泡排序与快速排序
刚好今晚看了js的冒泡排序跟快速排序,趁着还没忘记先记下来. 1. 冒泡排序:遍历数组,每个元素都与后一个元素比较,如果大于下一个元素,则两个元素位置调换.否则的话当前元素再与下下个元素比较,一直到 ...
随机推荐
- 停止Java线程,小心interrupt()方法
来源:http://blog.csdn.net/wxwzy738/article/details/8516253 程序是很简易的.然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决 ...
- MySQL execute dynamic sql script.
SET @sql = (SELECT IF( (SELECT COUNT(*) FROM usher_network_log ) > 1000000, "SELECT 0", ...
- C++Primer学习笔记(二、基础)
1.两种初始化方式,直接初始化语法更灵活,且效率更高. ); // 直接初始化 direct-initialization ; // 赋值初始化 copy-initialization 2.const ...
- 利用反射把查询到的Table、Reader转换成List、Model
菜鸟一枚,入园已有两年三个月,这还是第一次写博客,请各位大神斧正. 这是我写的一个工具类,通常我们从数据库查询到一个 DataReader 或者是 一个 Table , 想要转换成 一个 lis ...
- Observer 模式
Observer模式要解决的问题为:建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变.最常见的一个例子就是:对同一组数据进行 ...
- 【elasticsearch】(1)centos7 使用yum安装elasticsearch 2.X
前言 elasticsearch(下面称为ES)是一个基于Lucene的搜索服务器(By 百度百科:查看).所以他需要java的环境即jdk,这里提供懒人一键安装方式 # yum install ja ...
- 【Java多线程与并发库】4.传统线程同步通信技术
我们先通过一道面试题来了解传统的线程同步通信. 题目:子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程又循环100次,如此循环50次,请写出程序. 我没有看答案, ...
- sublime text下载和汉化
好处就不说了,能认识到这款编辑器,基本上对它有一定的了解了. Sublime Text2是一款开源的软件,不需要注册即可使用(虽然没有注册会有弹窗,但是基本不影响使用). 官方网站:http://ww ...
- dotnet core开发体验之开始MVC
开始 在上一篇文章:dotnet core多平台开发体验 ,体验了一把dotnet core 之后,现在想对之前做的例子进行改造,想看看加上mvc框架是一种什么样的体验,于是我就要开始诞生今天的这篇文 ...
- Python 学习之urllib模块---用于发送网络请求,获取数据
1.urllib urllib是Python标准库的一部分,包含urllib.request,urllib.error,urllib.parse,urlli.robotparser四个子模块. (1) ...