计数排序(Count Sort )与插入排序(Insert Sort)
计数排序法:计数数组适用于当前数组密集的情况。例如(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++;
}
} }
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)的更多相关文章
- 跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort)
跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort) 选择排序(selection sort) 算法原理:有一筐苹果,先挑出最大的一个放在最后,然后 ...
- 排序算法一:插入排序(Insertion sort)
最近从网易公开课在看麻省理工学院的公开课<算法导论>,感觉还不错,接下来几篇文章所示学习日记了,不准备对算法细节做过多描述,感兴趣的可以自己去看. 文章分几篇讲经典排序算法,直接上代码,根 ...
- 计数排序详解以及java实现
前言 我们知道,通过比较两个数大小来进行排序的算法(比如插入排序,合并排序,以及上文提到的快速排序等)的时间复杂度至少是Θ(nlgn),这是因为比较排序对应的决策树的高度至少是Θ(nlgn),所以排序 ...
- 计数排序与桶排序(bucket sort)
Bucket Sort is a sorting method that subdivides the given data into various buckets depending on cer ...
- counting sort 计数排序
//counting sort 计数排序 //参考算法导论8.2节 #include<cstdio> #include<cstring> #include<algorit ...
- 排序算法--插入排序(Insertion Sort)_C#程序实现
排序算法--插入排序(Insertion Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来 ...
- 经典排序算法 – 插入排序Insertion sort
经典排序算法 – 插入排序Insertion sort 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕. 插入排序方法分直接插入排序和折半插入排序两种, ...
- Uva-------(11462) Age Sort(计数排序)
B Age Sort Input: Standard Input Output: Standard Output You are given the ages (in years) of all ...
- c++算法联系,冒泡排序,bubble sort,插入排序,insert sort,
#include <iostream.h> #define MAX 100 void dispaly(int a[],int n) { for(int i=0;i<n;i+ ...
随机推荐
- 【Redis】使用Redis Sentinel实现Redis HA
阅读目录 1 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 18000 sent ...
- 读书笔记:Sheldon Ross:概率论基础教程:随机变量
例1b 一个坛子里装有编号1-20的球,无放回抽取3个,取出球中至少一个号码大于等于17的概率是多少? 除了书上的解法外,还有一种解法: 考虑相反的情况:三个球的号码都小于17. 第一次从编号1-16 ...
- 【转】双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计
架构简介 前几天网友来信说帮忙实现这样一个架构:只有两台机器,需要实现其中一台死机之后另一台能接管这台机器的服务,并且在两台机器正常服务时,两台机器都能用上.于是设计了如下的架构.此架构主要是由kee ...
- Linux常见设备及相应/dev/xxx文件名、Mount Point、挂载点、Mount命令、fstab、挂载分区
Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取).块设备(有缓冲且可以随机存取).这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理 ...
- [git]Git与Repo入门
转自:http://www.cnblogs.com/angeldevil/archive/2013/11/26/3238470.html 注:非常推荐的一篇关于git的博文 目录: 版本控制 一.原始 ...
- SVN 分支及合并的介绍和实践---命令行
写在前面 一些相关的概念和原理 进行分支开发的最佳实践 合并的分类 在 Eclipse 中进行合并操作 相关资源 写在前面 本文是由演讲整理而来的,介绍了 SVN 分支与合并的概念.流程和一些实际操作 ...
- onNewIntent调用时机
在IntentActivity中重写下列方法:onCreate onStart onRestart onResume onPause onStop onDestroy onNewIntent 一 ...
- System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list
static void Main(string[] args) { StringBuilder sb = new StringBuilder(); string test = "124454 ...
- SpringMVC4.0.3 @ResponseBody JSON 中文乱码问题
@RequestMapping(value="listUserJson.html",produces="text/html;charset=UTF-8") @R ...
- CentOS of MySQL command
1.本地连接数据库 [root@iZ253lxv4i0Z mysql]# mysql -u root -pEnter password: or: [root@iZ253lxv4i0Z mysql]# ...