当前位置:首页 » 操作系统 » 计数排序算法

计数排序算法

发布时间: 2022-03-14 09:55:25

Ⅰ 计数排序的介绍

计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。

Ⅱ 计数排序(count sorting)

我认为这是桶排不知对不对。
program tpx;
var b:array[0..100] of integer;
k:0..100;
i:integer;
begin
write('Enter date:(0-100)');
for i:=0 to 100 do b[i]:=0;
for i:= 1 to n do
begin
read(k);
b[k]:=b[k]+1;
end;
writeln('Output data:');
for i:=0 to 100 do
while b[i]>0 do begin write(i:6);b[i]:=b[i]-1 end;
writeln;
end.

Ⅲ 计数排序的算法描述

前向星不需要像邻接表那样用指针指向下一条边,还是挺方便的。但是,由于前向星初始化需要快排一遍,相对邻接表要慢许多。考虑到一般图论题点数都不会很大,所以可以改为采用计数排序的思想对前向星进行排序。
一开始读入时,先算出每个点出去的边有多少条,然后计算出排序后每个点出去的第一条边位置应在哪里,最后把全部边扫一遍放到排序后应在的位置就好了。
这样排序的话初始化的时间复杂度就降到了O(m),总体时间并不会逊色于邻接表。 如果用快速排序,该算法的复杂度为O(nlog^2n)。改用计数排序后,复杂度降为O(nlogn)。

Ⅳ 请问各位谁知道[基数排序]和[计数排序]之间的差异啊

基数排序 (radix sort)则是属于“分配式排序”(distribution sort),基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,借以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。

计数排序是一个类似于桶排序的排序算法,其优势是对已知数量范围的数组进行排序。它创建一个长度为这个数据范围的数组C,C中每个元素记录要排序数组中对应记录的出现个数。

Ⅳ 计数排序算是一种桶排序么

那是基数排序

Ⅵ 计数排序的算法过程

假设输入的线性表L的长度为n,L=L1,L2,..,Ln;线性表的元素属于有限偏序集S,|S|=k且k=O(n),S={S1,S2,..Sk};则计数排序可以描述如下:
1、扫描整个集合S,对每一个Si∈S,找到在线性表L中小于等于Si的元素的个数T(Si);
2、扫描整个线性表L,对L中的每一个元素Li,将Li放在输出线性表的第T(Li)个位置上,并将T(Li)减1。

Ⅶ C++计数排序

不知道你想做什么…………
#include<iostream>
using namespace std;

void ChoiceSort( int a[],int n )
{
int count = 0, i , k = 0;
while( k < n )
{
for( i = 0 ; i < n ; i++ )
{
if( a[k] > a[i] )
count++;
}
if( count > 0 )
{
//swap( a[k] , a[count] );
int temp = a[k];
a[k] = a[i] ;
a[i] = temp;
}

if( count == 0 )
k++; //这里是永远不可能进入的,明白?
count = 0;

}

for( i = 0 ; i < n ; i++ )
cout << a[i] << " " ;
cout << endl;

return ;
}

int main()
{
int n = 5,a[5] = { 4,3,1,5,2};
ChoiceSort( a , n );

system("pause");
return 0;
}

你的K永远进不去,所以,你永远跳不出循环……

但是,你的算法能解释一下吗?反正不明白……透着一股东西

Ⅷ 编写算法实现计数排序。

#include <stdio.h>

#include <stdlib.h>

#include<time.h>

int main ()

{

int a[1000],b[1000],i,j,k,n,t;

srand(time(0));

for(i=0;i<1000;i++)

a[i]=i;

for(i=999;i>0;i--)

{

j=rand()%i;

k=a[j];a[j]=a[i];a[i]=k;

}

printf("乱序、无重的数组: ");

for(i=0;i<1000;i++)

printf("%4d",a[i]);

for(i=0;i<1000;i++)

{

k=0;

for(j=0;j<1000;j++)

if(a[j]<a[i])k++;

b[k]=a[i];

}

printf("排序后的数组: ");

for(i=0;i<1000;i++)

printf("%4d",b[i]);

}

c语言实现计数排序,求代码,最好用链表

//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "stdlib.h"
void main(void){
int n,*p,i,j,k;
printf("Input n...\nn=");
scanf("%d",&n);
if((p=(int *)malloc(sizeof(int)*n))==NULL){
printf("Application memory failure...\n");
exit(0);
}
for(i=0;i<n;scanf("%d",p+i++));
for(i=0;i<n;i++){
for(k=i,j=k+1;j<n;j++)
if(p[k]>p[j]) k=j;
if(k!=i){
j=p[k];
p[k]=p[i];
p[i]=j;
}
}
for(i=0;i<n;printf("%d ",p[i++]));
printf("\n");
}

Ⅹ 用c语言实现计数排序、基数排序、桶排序算法。

网上找吧,这些都是基本东西,要不买本数据结构的书看看

热点内容
apache压缩 发布:2024-11-15 15:11:54 浏览:245
java比较三个数 发布:2024-11-15 15:08:39 浏览:835
fml加密 发布:2024-11-15 15:05:56 浏览:882
存储上市龙头 发布:2024-11-15 14:52:14 浏览:37
我的世界服务器怎么重置教学 发布:2024-11-15 14:52:13 浏览:123
C语言tf 发布:2024-11-15 14:36:22 浏览:811
违反密码法是什么意思 发布:2024-11-15 14:36:20 浏览:920
androidmp3录音 发布:2024-11-15 14:32:50 浏览:493
英朗自动挡哪个配置最好 发布:2024-11-15 14:27:44 浏览:253
编译原理断言有哪几种 发布:2024-11-15 14:25:29 浏览:201