404 Blog Not Found:javascript - Array#sort������quicksort����٤�!?�Ϥ���äȤ����ä��Ǥ������¤ϥǡ����μ��व������Ǥ���С�builtin sort��Ф�ȴ�����Ȥ�JavaScript�Ǥʤ��Ƥ⤽��ۤ��񤷤�����ޤ���
�㤨�С������Ȥ������оݤ�̩�����������ͤǡ����꡼���դ����ˤ�����ˤϡ�bucket sort������ޤ��������Ȥ��С�Perl�ˤ����Ƥ���built-in���ñ�˽Ф�ȴ���ޤ���
% perl bucket.pl 10000 Benchmark: running bucket, builtin, quick for at least 3 CPU seconds... bucket: 3 wallclock secs ( 3.06 usr + 0.03 sys = 3.09 CPU) @ 40.13/s (n=124) builtin: 3 wallclock secs ( 3.17 usr + 0.03 sys = 3.20 CPU) @ 30.63/s (n=98) quick: 3 wallclock secs ( 3.16 usr + 0.01 sys = 3.17 CPU) @ 4.10/s (n=13) Rate quick builtin bucket quick 4.10/s -- -87% -90% builtin 30.6/s 647% -- -24% bucket 40.1/s 879% 31% --
�������JavaScript�Ǥ⡣
����bucket sort�����르�ꥺ��Ū�ˤ��ñ�Ǥ���
- Ŭ����������Ѱդ��롣���줬�Х���(bucket)��������
- �������󤫤���ͤ�緫��˼��Ф������ο������ܤΥХ��Ĥˤ��ο��ͤ򤿤��������
- ���ΥХ��Ĥ�������С�������
�ʲ����ºݤΥ�������
JavaScriptvar bsort = function(ary, cmp){ var bucket = []; for (var i = 0, l = ary.length; i < l; i++){ bucket[ary[i]] = ary[i]; } var j = 0; for (var i = 0, l = bucket.length; i < l; i++){ if (bucket[i] == undefined) continue; ary[j++] = bucket[i]; } return ary; };Perl
sub bucket_sort(\@&){ my ($aref, $cref) = @_; my @bucket = (); $bucket[$_] = $_ for (@$aref); my $i = 0; defined $_ and $aref->[$i++] = $_ for (@bucket); return $aref; }
����Ǥϡ��ʤ�builtin�ǤϤ��줬�Ȥ��ʤ����Ȥ����С����������ʤ�����Ǥ����������Τ����Τϡ����������ӥ�����(comparison sort)�ǡ�����Ǥ���н�����֤��ؿ����Ϥ���С��ɤ������Ǥ������������ȤǤ��ޤ�����in-place(����������¤��ؤ���)�Ǥ���С����꡼��Ǿ��¤ǺѤߤޤ����������ꡢO(n log(n))��Ķ�����ʤ��ɤ�¸�ߤ���Ȥ����櫓�Ǥ���
���ȡ��åµï¿½Î¼ï¿½ï¿½ï¿½ï¿½Î¾ï¿½ï¿½Ç¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ê£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½NG�Ǥ�(��������)��
������Ф���bucket sort�Ǥϡ��㤨�С�(1,4,9...100��)�Τ褦�ʡ��������ޤФ������ˤϻȤ��Ť餤�Ȥ����Τ�狼��ޤ���
���르�ꥺ�������ϡ��ǡ������̣������ǡ��Ȥ������äǤ�����
Dan the Unsorted Man
�ɵ�:
odz buffer - Bucket Sort & Distribution Counting Sort��������ʣ�ͤ���������Ǥ��ü������㤦�������ˤϤ��������Τ� bucket sort �����ɡ���ʣ������ʤ��Ȥ��ʤꥢ�ץꥱ������󤬸��ꤵ���褦�ʡ��Ƥ����ǧ�����Ƥ��������Ƥʤ������ʤ���������ɡ�
���ä����Ȥ���Ǥ����Ȥ����櫓�Ǥ��λݤ��ɵ����Ƥ����ޤ�������ʣ����OK�Ǥ�odz����ξåµentry�ò»²¾È¤Î¤ï¿½ï¿½È¡ï¿½
����ʬ�ۿ��������Ȥˤ��ơ���ʣ��¿��������ä��顢���򤤤��Ȥ��狼��ޤ�����JS��quick sort���䤿���٤��ʤ�ΤǤ�����ä���entry�μ����Ϥ��Τޤޤˤ��Ƥ����ޤ������������ʬ�ۿ��������Ȥμ�����ʲ��ˡ�
var dc_sort = function(ary, cmp){ var bucket = []; for (var i = 0, l = ary.length; i < l; i++){ if (! bucket[ary[i]]) bucket[ary[i]] = 0; bucket[ary[i]] += 1; } var j = 0; for (var i = 0, l = bucket.length; i < l; i++){ if (! bucket[i]) continue; for (var k = 0; k < bucket[i]; k++) ary[j++] = i; } return ary; };Perl
sub dc_sort(\@&){ my ($aref, $cref) = @_; my @bucket = (); $bucket[$_]++ for (@$aref); my $j = 0; for my $i (0 .. @bucket - 1){ my $b = $bucket[$i] or next; $aref->[$j++] = $i for (1..$b) } return $aref; }
���������Ȥ�O(n^2)�����ɡ����������Ȥʤ�Х��åȥ�����+���������ȤǤۤȤ�ɤξ��ϥåԡ��ˤʤ��Ȼפ���