在之前写过的插入排序,归并排序,堆排序,快排都是比较排序,它们个个元素之间的次序依赖于他们之间的比。
计数排序不是一个比较排序的算法,它的所有代码完全没有在输入元素之间的比较。计数排序的基本思想是:对没一个输入元素x,确定小于x的元素个数。用这个信息,就可以把x放到它输出数组上的位置。
#include
#include
using namespace std;
void countsort(...
分类:
编程语言 时间:
2015-05-19 22:50:20
阅读次数:
166
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据非常大,一次不能容纳所有的排序记录,在排序过程中须要訪问外存。我们这里说说八大排序就是内部排序。 当n较大,则应採用时间复杂度为O(nlog2n)的排序方法:高速排序、堆排序或归并排序序。 高速排序:是眼下基于...
分类:
编程语言 时间:
2015-05-19 18:12:50
阅读次数:
177
排序算法即是一种能将一串数据依照特定排序方式进行排列的一种算法。本文将简单介绍几种常用的排序算法,并给出源代码,仅供参考。
1.直接插入排序:是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐...
分类:
编程语言 时间:
2015-05-18 23:08:43
阅读次数:
223
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据非常大,一次不能容纳所有的排序记录,在排序过程中须要訪问外存。我们这里说说八大排序就是内部排序。 当n较大,则应採用时间复杂度为O(nlog2n)的排序方法:高速排序、堆排序或归并排序序。 高速排序:是眼下基于...
分类:
编程语言 时间:
2015-05-17 10:45:32
阅读次数:
193
计数排序_COUNTINGSORT我们之前讲过四种基本的排序方法:《快速排序_QUICKSORT》:http://blog.csdn.net/ii1245712564/article/details/45749061
《堆排序_HEAPOSRT》http://blog.csdn.net/ii1245712564/article/details/45534625
《归并排序_MERGESORT》:...
分类:
编程语言 时间:
2015-05-16 16:37:43
阅读次数:
299
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要.....
分类:
编程语言 时间:
2015-05-14 15:45:37
阅读次数:
187
最小堆排序先用一个筛的方法形成一个最小堆那什么是最小堆呢?也就是每一个父节点都比它的左右儿子大 如何筛?从最后一个非叶节点开始(也就是最后一个有儿子的节点),先比较它的左右儿子大小,和最大的交换。最小堆形成后 根节点是最大的把根节点和最后一个节点交换 那么最后一个节点就是排完序的最大值 存到数组中然...
分类:
其他好文 时间:
2015-05-13 21:17:28
阅读次数:
111
八大排序算法的排序时间长度的比较,测试数据10000000时部分结果如下输入测试数据长度: 10000000数据初始化中...数据初始化完成! 堆排序用时: 8秒 499毫秒 快速排序用时: 22秒 35毫秒 归并排序用时: 34秒 473毫秒另外五种排序本人并未等待结果,读者可...
分类:
编程语言 时间:
2015-05-11 23:53:18
阅读次数:
144
该文章是关于数据结构部分排序的总结,包括各种排序方法的时间和空间复杂度的分析,主要从直接插入、交换(冒泡、快速)、选择(直接选择、堆排序)和归并四类来分析。
直接插入:
依次将每个记录插入到一个已排好序的有序表中,从而得到一个新的、记录数增加1的有序表。具体:插入第i个记录时,前i-1已经排好序,此时将第i个记录的关键字和第i-1,i-2比较,从而找到插入位置插入位置及其后记录...
分类:
编程语言 时间:
2015-05-11 20:12:34
阅读次数:
218
堆排序是利用堆积树这种数据结构设计的一种算法。
要学习堆排序,我们首先要了解什么是二叉堆:
二叉堆是完全二叉树这这是近似完全二叉树。二叉堆可分为两种形式:最大堆和最小堆。
最大堆的性质是指某个结点的值至多与起父结点的值一样大,最小堆的性质就是指某个节点的值都大于其父结点的值。下图是一个最大堆和一个最小堆。
在堆排序中我们一般使用最大堆。我们要进行堆排序,首先需要把我们的数组转化成一个最大堆...
分类:
编程语言 时间:
2015-05-10 10:01:00
阅读次数:
170