计数排序法:计数数组适用于当前数组密集的情况。例如(2,3,5,4,2,3,3,2,5,4)

方法:先找出最大值最小值,之后统计每个数出现的次数,根据次数从小到大往数组里添加

计数排序法是一种不需要比较的排序方法

 void count(int top,int length,int arr[])
{
int min=arr[],max=arr[],i=,j=;
int *count=(int*)malloc(sizeof(int)*(max-min+));
if(arr==NULL||length<=)return; while(i<length)//先找出最大和最小值
{
if(min>arr[i])
{
min=arr[i];
}
if(max<arr[i])
{
max=arr[i];
}
i++;
} i=; while(i<length)//根据最大最小值创建一个动态数组并且初始化计数数组
{
count[i]=;
i++;
}
i=; while(i<length)//计算数组中某个数出现的次数
{
count[arr[i]-min]++;//count的下标加上最小值就是数组中的某个值
i++;
}
for(i=;i<(max-min+);i++)
{
while(count[i]!=)//当次数为零时候,遍历count中下一个值
{
arr[j]=min+i;//从小到大取出在count数组中存的值并且赋给原数组
count[i]--;//每取出一个数,这个数在count中存的次数减一
j++;
}
} }
insert Sort:将原有的数组分为两部分,一部分是无序的一部分是有序的,将无序数组第一个不断插入有序的。
插入排序适合的两种情况:
1.每一个元素距离其最终位置不远的时候选择
2.对于元素较少的数组我们插入排序最快(如果N过于小受系数影响)
void select(int arr[],int n)
{
int i=,j=,temp;//定义变量
for(i;i<n;i++)//外层循环
{
j=i;
temp=arr[i];//保存定位置的数 while(arr[j-]>temp&&j>)//无序第一个与有序最后一个比较
{
arr[j]=arr[j-];//如果有序最后一个大于无序第一个,有序最后一个的值赋予无序
j--;//无序与有序倒数第二个比,直到找到有序比它小的或者到有序第一个位置
}
arr[j]=temp;//把无序最后一个的值赋予最终位置
}
}

计数排序(Count Sort )与插入排序(Insert Sort)的更多相关文章

  1. 跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort)

    跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort) 选择排序(selection sort) 算法原理:有一筐苹果,先挑出最大的一个放在最后,然后 ...

  2. 排序算法一:插入排序(Insertion sort)

    最近从网易公开课在看麻省理工学院的公开课<算法导论>,感觉还不错,接下来几篇文章所示学习日记了,不准备对算法细节做过多描述,感兴趣的可以自己去看. 文章分几篇讲经典排序算法,直接上代码,根 ...

  3. 计数排序详解以及java实现

    前言 我们知道,通过比较两个数大小来进行排序的算法(比如插入排序,合并排序,以及上文提到的快速排序等)的时间复杂度至少是Θ(nlgn),这是因为比较排序对应的决策树的高度至少是Θ(nlgn),所以排序 ...

  4. 计数排序与桶排序(bucket sort)

    Bucket Sort is a sorting method that subdivides the given data into various buckets depending on cer ...

  5. counting sort 计数排序

    //counting sort 计数排序 //参考算法导论8.2节 #include<cstdio> #include<cstring> #include<algorit ...

  6. 排序算法--插入排序(Insertion Sort)_C#程序实现

    排序算法--插入排序(Insertion Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来 ...

  7. 经典排序算法 – 插入排序Insertion sort

    经典排序算法 – 插入排序Insertion sort  插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕. 插入排序方法分直接插入排序和折半插入排序两种, ...

  8. Uva-------(11462) Age Sort(计数排序)

    B Age Sort Input: Standard Input Output: Standard Output   You are given the ages (in years) of all ...

  9. c++算法联系,冒泡排序,bubble sort,插入排序,insert sort,

    #include <iostream.h> #define  MAX 100 void dispaly(int a[],int n) {     for(int i=0;i<n;i+ ...

随机推荐

  1. Oracle与MySQL的几点区别

    Oracle数据库与MySQL数据库的区别是本文我们主要介绍的内容,希望能够对您有所帮助. 1.组函数用法规则 mysql中组函数在select语句中可以随意使用,但在oracle中如果查询语句中有组 ...

  2. LVM---动态调整磁盘容量

    LVM:logical volume manager(逻辑卷管理):LVM屏蔽了底层磁盘布局,方便于动态调整磁盘容量. 一.创建逻辑卷的步骤: 1)通过fdisk 工具将磁盘转换为linux分区 2) ...

  3. 详细说明svn分支与合并---命令行

    一,svn分支与合并有什么用? 作程序的,对svn在熟悉不过了,但对svn分支熟悉的,我想并不多.因为一般情况下,是用不着svn分支的,其实也没有那个必要.下面我例举几个需要用到svn分支的情况: 1 ...

  4. Android权限之sharedUserId和签名

    转自:http://blog.csdn.net/hmg25/article/details/6447067 最近在做个东西,巧合碰到了sharedUserId的问题,所以收集了一些资料,存存档备份. ...

  5. Chrome插件开发入门(二)——消息传递机制

    Chrome插件开发入门(二)——消息传递机制   由于插件的js运行环境有区别,所以消息传递机制是一个重要内容.阅读了很多博文,大家已经说得很清楚了,直接转一篇@姬小光 的博文,总结的挺好.后面附一 ...

  6. VS2013 越来越慢

    Q.VS2013 原来启动只要大概 一两秒的时间,现在启动最少也得十秒以上.而且打开项目也变得很慢了!求解决方案. 清理一下缓存就好了.devenv.exe /resetuserdata 第二:装了v ...

  7. PLSQL_性能优化系列19_Oracle Explain Plan解析计划通过Profile绑定

    20150529 Created By BaoXinjian

  8. API 双方认证探讨

    开放 api 已是大势所趋.而 api 这种东西有个特点就是覆水难收.一旦公开出去了,被大量用户使用,一旦修改,就会让广大用户都掉坑里.所以,api 在设计之初就要尽量考虑周全,并预留扩展可能. 目前 ...

  9. 为什么学习html5

    html5  2010年正式推出 新的web时代 优势: 1,跨平台运行                      PC MAC LINUX 手机 PAD 2,硬件要求低 3,flash之外的选择 h ...

  10. 张恭庆编《泛函分析讲义》第二章第4节 $Hahn$-$Banach$ 定理习题解答

    1.次线性泛函的性质 设 $p$ 是实线性空间 $\scrX$ 上的次线性泛函, 求证: (1)$p(0)=0$; (2)$p(-x)\geq -p(x)$; (3)任意给定 $x_0\in \scr ...