當前位置:首頁 » 操作系統 » 計數排序演算法

計數排序演算法

發布時間: 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語言實現計數排序、基數排序、桶排序演算法。

網上找吧,這些都是基本東西,要不買本數據結構的書看看

熱點內容
安卓系統在哪裡有格式化 發布:2024-09-25 11:14:27 瀏覽:890
javastruct 發布:2024-09-25 11:07:04 瀏覽:376
c語言幾幾開 發布:2024-09-25 10:46:07 瀏覽:628
技能樹演算法 發布:2024-09-25 10:45:12 瀏覽:164
pingc語言實現 發布:2024-09-25 10:45:12 瀏覽:897
對法的演算法 發布:2024-09-25 10:14:53 瀏覽:802
安卓用什麼下載app軟體貼吧 發布:2024-09-25 10:09:52 瀏覽:269
linux開放埠是否開放 發布:2024-09-25 10:05:20 瀏覽:567
vb打開access資料庫 發布:2024-09-25 10:01:01 瀏覽:739
啊哈java 發布:2024-09-25 09:49:26 瀏覽:68