排序算法的c++实现——计数排序】的更多相关文章

继上篇博文,今天我将先介绍一下什么是计数排序,将计数排序描述清楚后,再进行后续的桶排序方法解决这个问题. 通常情况下,一提到排序,大家第一反应就是比较,其实,今天我要说的这个计数排序,不是基于比较的排序算法. 计数排序的主要思路(精髓): 针对给定的一组整数数据,在其中任意选取一个数X,统计出这组数中不比X大的所有数据的个数n,那么,此时,X的大小次序就应该在这组数的n+1的位置了. 针对这个思想,有几点要注意: 1. 给定的数组A的数据,必须都是整数 2. 给定的数据比较稀疏的情况下,效率(空…
任何比较排序算法的时间复杂度的上限为O(NlogN), 不存在比o(nlgN)更少的比较排序算法.如果想要在时间复杂度上超过O(NlogN)的时间复杂度,肯定需要加入其它条件.计数排序就加入了限制条件,从而使时间复杂度为O(N). 计数排序的核心思想(来自算法导论):计数排序要求待排序的n个元素的大小在[0, k]之间,并且k与n在一个数量级上,即k=O(n).对于每一个输入元素x, 确定小于等于x的个数为i.利用这一信息,就可以把元素x放到输出数组的正确位置,即把元素x放到输出数组下标为i-1…
计数排序   第10节 计数排序练习题 对于一个int数组,请编写一个计数排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] Java (javac 1.7) 代码自动补全           1 import java.util.*; 2 3 public class CountingSort { 4 public int[] countingSort(int[] A, int n) {…
插入排序 核心思想 代码实现 希尔排序 核心思想 代码实现 冒泡排序 核心思想 代码实现 快速排序 核心思想 代码实现 直接选择排序 核心思想 代码实现 堆排序 核心思想 代码实现 归并排序 核心思想 代码实现 基数排序 核心思想 代码实现 桶排序 核心思想 代码实现 测试结果 总结 排序算法,重要性不言而喻.现摘录一篇,转载至此,以供学习鉴赏. 插入排序 核心思想 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的.个数加一的有序数据,算法适用于少量数据的排序,时间…
排序算法进入到第7篇,这个也还是比较基础的一种,希尔排序,该排序算法,是依据该算法的发明人donald shell的名字命名的.1959年,shell基于传统的直接插入排序算法,对其性能做了下提升,其思路,主要是基于下面的原因进行的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率. 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位. 下面,我们就看看希尔排序,具体的实现思路如下: 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序:随着…
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置 交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动 不稳定 */ #include<windows.h> #include<stdio.h> void main(){ ]={,,,,,,,,,},t; int size = size…
Java排序算法(四)希尔排序2 希尔排序移步法:分组+直接插入排序组合 一.测试类SortTest import java.util.Arrays; public class SortTest { private static final int L = 20; public static void main(String[] args) { int [] arr = new int[6]; for (int i = 0; i < arr.length; i++) { arr[i] = (in…
 题目 计数排序 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <time.h> #define N 5 void PrintArr(int *pnArr, int nLen) { for (int i = 0; i < nLen; i++) { printf("%d ", pnArr[i]); } printf(&quo…
1.基本思想 假设数序列中小于元素a的个数为n,则直接把a放到第n+1个位置上.当存在几个相同的元素时要做适当的调整,因为不能把所有的元素放到同一个位置上.计数排序假设输入的元素都是0到k之间的整数. 2.实现原理 为一组数在排序之前先统计这组数中其他数小于这个数的个数,则可以确定这个数的位置.例如要排序的数为 7 4 2 1 5 3 1 5:则比7小的有7个数,所有7应该在排序好的数列的第八位,同理3在第四位,对于重复的数字,1在1位和2位(暂且认为第一个1比第二个1小),5和1一样位于6位和…
排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析. 文章规划: 一.通过自己对排序算法本身的理解,对每个方法写个小测试程序. 具体思路分析不展开描述. 二.通过<大话数据结构>一书的截图,详细分析该算法 .  在此,推荐下程杰老师的<大话数据结构>一书,当然不是打广告,只是以一名读者的身份来客观的看待这本书,确实是通俗易懂,值得一看. ②选择排序   一.个人理解 选择排序思路: 首先在未排序序列中找到最小元素,存放到排…