C/C++中的经典排序算法总结
在C/C++中,有一些经典的排序算法,例如:冒泡排序、鸡尾酒排序或双向冒泡排序(改进的冒泡排序)、选择排序、直接插入排序、归并排序、快速排序、希尔排序和堆排序等等。下面对这些排序算法进行一一解析并给出示例代码以共享之。
1、冒泡排序
冒泡排序是最基本的排序算法,之所以称之为冒泡排序是因为在冒泡排序的过程中总是大数往前放,小数往后放,相当...
分类:
编程语言 时间:
2015-07-23 12:09:13
阅读次数:
161
针对现实中的排序问题,算法有七把利剑可以助你马道成功。
首先排序分为四种:
交换排序: 包括冒泡排序,快速排序。
选择排序: 包括直接选择排序,堆排序。
插入排序: 包括直接插入排序,希尔排序。
合并排序: 合并排序。
冒泡排序简单来说就是利用两个for循环来进行排序,由前一个数据和后一个数据比较,如果前一个大于后一个则交...
分类:
编程语言 时间:
2015-07-23 10:43:10
阅读次数:
112
1、堆排序算法描述:
(1)定义
n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):
1)ki=号。//k(i)相当于二叉树的非叶子结点,K(2i)则是左子节点,k(2i+1)是右子节点
2)若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:
树中任一非叶子结点的关键...
分类:
编程语言 时间:
2015-07-22 18:51:11
阅读次数:
116
温故知新,基础复习(二叉堆排序)最小堆(最终数组的数据是降序),最大堆(最终数组的数据是升序)下例是最小堆#include
#include
void Swap(int Arra[],unsigned int LeftIndex,unsigned int RightIndex)
{
int TeampValue = Arra[LeftIndex];
Arra[LeftIndex]=Arr...
分类:
编程语言 时间:
2015-07-22 00:04:42
阅读次数:
167
内部排序算法总结:排序算法有各自的时间复杂度,并不代表时间复杂度高的算法在任何情况下就比时间复杂度低的算法要低效,相反也一样。排序算法按照其最基本的操作可以分为以下几种类型:插入类排序算法直接插入排序算法折半插入排序算法希尔排序算法选择类排序算法简单选择排序算法堆排序交换类排序算法冒泡排序快速排序1...
分类:
编程语言 时间:
2015-07-20 23:08:18
阅读次数:
147
1 #include 2 using namespace std; 3 4 struct sqlist 5 { 6 int length;//待排序数组的长度 7 int ary[100];//待排序数组(从下表号1开始) 8 } 9 10 //对于L【s-m】,假设除s点外,其...
分类:
编程语言 时间:
2015-07-20 22:52:11
阅读次数:
125
STL中与堆相关的4个函数——建立堆make_heap(),在堆中添加数据push_heap(),在堆中删除数据pop_heap()和堆排序sort_heap():
头文件 #include
下面的_First与_Last为可以随机访问的迭代器(指针),_Comp为比较函数(仿函数),其规则——如果函数的第一个参数小于第二个参数应返回true,否则返回false。
建立堆
make_heap(_First, _Last, _Comp)
默认是建立最大堆的。对int类型,可...
分类:
其他好文 时间:
2015-07-20 16:43:31
阅读次数:
117
#归并排序defmergeSort(a,L,R):if(L>=R):returnmid=((L+R)>>1)mergeSort(a,L,mid)mergeSort(a,mid+1,R)p=Lq=mid+1t=[]while(pa[q]:t.append(a[q])q+=1while(pval])a=...
分类:
编程语言 时间:
2015-07-20 12:33:33
阅读次数:
181
根据排序过程中借助的主要操作,我们将内排序分为四类: 插入排序类 直接插入排序 希尔排序 选择排序类 简单选择排序 堆排序 交换排序类 冒泡排序 快速排序 归并排序类 归并排序从算法的简单性来看,我们将7种算法分为两类:简单算法:冒泡排序、简单选择排序、直接插入排序改进...
分类:
编程语言 时间:
2015-07-18 16:47:34
阅读次数:
142