计数排序(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+ ...
随机推荐
- 【宋红康学习日记1】关于环境变量设置出现的问题——找不到或无法加载主类 java
忙活了一整天,最后被自己的小愚蠢所拜倒,不过也是学习到了很多,知道了出现问题怎样去解决. 问题是在cmd运行环境中编译我的第一个小程序HelloWorld时,javac命令可以运行,但是java命令后 ...
- (转)textarea去掉右侧滚动条,去掉右下角拖拽
本文转载自:http://blog.csdn.net/cctv_end/article/details/7946188 代码: <TEXTAREA style= "overflo ...
- IntelliJ IDEA设置JDK
File→Project Structure→Project SDK→New 来自为知笔记(Wiz)
- beego里面自定义配置文件
beego编译好的exe通过全路径调用会crash,看了半天,发现是解析不到配置文件,研究了下 发现beego自定义配置文件以后,需要手工parse,我表示,以为是自动化的,没想到是半自动化的…… 追 ...
- 347. Top K Frequent Elements
Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2 ...
- Haroopad 写 markdown文本
很好用,推荐大家都来用. http://www.csdn.net/article/2014-05-05/2819623
- queue 与 vector
优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序 每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储. 例如:我们常用的操作就 ...
- vim常用命令笔记(转载)
添加多行注释: 1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式; 2. 在行首使用上下键选择需要注释的多行; 3. 按下键盘(大写)“I”键,进入插入模式 ...
- cookie和会话状态的工作原理
一:存在两种类型的cookie: 1>会话cookie (session cookie) 不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口, ...
- Java队列集合的性能测试
同时开10个线程存入和取出100万的数据,结论如下: DoubleBufferedQueue < ConcurrentLinkedQueue < ArrayBlockingQueue &l ...