By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,436 Members | 2,979 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,436 IT Pros & Developers. It's quick & easy.

counting duplicate values

P: n/a
NiQ
Hello every one,
this is about an array of string and may be have done several time
before but i need it and wasnt able to find it so here is the problem

i have an array of strings with contains words and i want a distinct
list of array with the count of each number repeat i.e how many time
it exist in the array and the final result should be sorted according
to the number of repeat from hight to low .
for example

thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"

the result should be
32a
29s
5a
7s
20
8
i have this code which take out all the duplicate values and print the
distinct values

function RemCDups(byVal thearray)

Dim element,element2,k,i,j
dim newArray()
redim newArray(0)

for i = 0 to ubound(thearray)

element = thearray(i)
element2 = "false"

for j = i + 1 to Ubound(thearray)
if theArray(j) = element then
element2 = "true"
end if
next

if element2 = "false" then
redim preserve newArray(Ubound(newArray)+1)
newArray(k) = theArray(i)
k = k + 1
end if
next

RemCDups = newArray
end function

but i want to modify it to do the sort according to the count of each
element from high to low

thanks.

regards
NIQ
Jul 19 '05 #1
Share this Question
Share on Google+
9 Replies


P: n/a
So you have succeded finding the values and putting 'em into an array and
now you want to order the array?

for j = 1 to ubound(array)
for i = 0 to ubound(array)
if not i=ubound(array)
if array(i)<array(i+1) then
temp=array(i)
array(i)=array(i+1)
array(i+1)=temp
end if
end if
next
next

I hope i've written the algorithem currect... this is the simplest way to
order an array.
you can also use JS.
Roy.

"NiQ" <ni*****@yahoo.com> wrote in message
news:cd**************************@posting.google.c om...
Hello every one,
this is about an array of string and may be have done several time
before but i need it and wasnt able to find it so here is the problem

i have an array of strings with contains words and i want a distinct
list of array with the count of each number repeat i.e how many time
it exist in the array and the final result should be sorted according
to the number of repeat from hight to low .
for example

thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"

the result should be
32a
29s
5a
7s
20
8
i have this code which take out all the duplicate values and print the
distinct values

function RemCDups(byVal thearray)

Dim element,element2,k,i,j
dim newArray()
redim newArray(0)

for i = 0 to ubound(thearray)

element = thearray(i)
element2 = "false"

for j = i + 1 to Ubound(thearray)
if theArray(j) = element then
element2 = "true"
end if
next

if element2 = "false" then
redim preserve newArray(Ubound(newArray)+1)
newArray(k) = theArray(i)
k = k + 1
end if
next

RemCDups = newArray
end function

but i want to modify it to do the sort according to the count of each
element from high to low

thanks.

regards
NIQ

Jul 19 '05 #2

P: n/a
"NiQ" wrote:
: i have an array of strings with contains words and i want a distinct
: list of array with the count of each number repeat i.e how many time
: it exist in the array and the final result should be sorted according
: to the number of repeat from hight to low .
: for example
:
: thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"
: the result should be
: 32a
: 29s
: 5a
: 7s
: 20
: 8
: but i want to modify it to do the sort according to the count of each
: element from high to low

NiQ...

I took a different approach and chose to use a dictionary.

I took your string and split it to create an array of elements.

I took the elements of the array and created a dictionary but only to add
unique keys so the result was 6 keys. I then created another dictionary,
comparing with the first dictionary keys to find the duplicates and then
incremented the value of the items. After that I used a dictionary sort I
found at Microsoft and modified it so I could pass the order to return the
results.

This is my solution. There is a link on the page to view the source.

http://kiddanger.com/lab/array.asp

HTH...

--
Roland Hall
/* This information is distributed in the hope that it will be useful, but
without any warranty; without even the implied warranty of merchantability
or fitness for a particular purpose. */
Technet Script Center - http://www.microsoft.com/technet/scriptcenter/
WSH 5.6 Documentation - http://msdn.microsoft.com/downloads/list/webdev.asp
MSDN Library - http://msdn.microsoft.com/library/default.asp
Jul 19 '05 #3

P: n/a
NiQ
thanks a lot to both of you . i will try these codes and will post
incase of any furthur help . but i really appreciate this thanks a
lot.

regards
niq

"Roland Hall" <nobody@nowhere> wrote in message news:<uD**************@TK2MSFTNGP11.phx.gbl>...
"NiQ" wrote:
: i have an array of strings with contains words and i want a distinct
: list of array with the count of each number repeat i.e how many time
: it exist in the array and the final result should be sorted according
: to the number of repeat from hight to low .
: for example
:
: thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"
: the result should be
: 32a
: 29s
: 5a
: 7s
: 20
: 8
: but i want to modify it to do the sort according to the count of each
: element from high to low

NiQ...

I took a different approach and chose to use a dictionary.

I took your string and split it to create an array of elements.

I took the elements of the array and created a dictionary but only to add
unique keys so the result was 6 keys. I then created another dictionary,
comparing with the first dictionary keys to find the duplicates and then
incremented the value of the items. After that I used a dictionary sort I
found at Microsoft and modified it so I could pass the order to return the
results.

This is my solution. There is a link on the page to view the source.

http://kiddanger.com/lab/array.asp

HTH...

Jul 19 '05 #4

P: n/a
NiQ
hi ronald
thanks again for your great help , i am just having a little problem
when i increase the number of one exisitence more than 10 then it
sorts it verz strangly i want to sort on the number of occourences
with the code u wrote can u try this array
thearray = "32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32a,32a,32a ,32a,32a,32a,32a,32a,32a"

the result will be something like this
2=29s
2=5a
13=32a
1=8
1=20
1=7s

when it should be
13=32a
2=29s
2=5a
1=8
1=20
1=7s

please let me know how i can fix it .

best regards
NIQ

"Roland Hall" <nobody@nowhere> wrote in message news:<uD**************@TK2MSFTNGP11.phx.gbl>...
"NiQ" wrote:
: i have an array of strings with contains words and i want a distinct
: list of array with the count of each number repeat i.e how many time
: it exist in the array and the final result should be sorted according
: to the number of repeat from hight to low .
: for example
:
: thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"
: the result should be
: 32a
: 29s
: 5a
: 7s
: 20
: 8
: but i want to modify it to do the sort according to the count of each
: element from high to low

NiQ...

I took a different approach and chose to use a dictionary.

I took your string and split it to create an array of elements.

I took the elements of the array and created a dictionary but only to add
unique keys so the result was 6 keys. I then created another dictionary,
comparing with the first dictionary keys to find the duplicates and then
incremented the value of the items. After that I used a dictionary sort I
found at Microsoft and modified it so I could pass the order to return the
results.

This is my solution. There is a link on the page to view the source.

http://kiddanger.com/lab/array.asp

HTH...

Jul 19 '05 #5

P: n/a
NiQ wrote:
hi ronald
thanks again for your great help , i am just having a little problem
when i increase the number of one exisitence more than 10 then it
sorts it verz strangly i want to sort on the number of occourences
with the code u wrote can u try this array
thearray =
"32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32a,32a,32a ,32a,32a,32a,32a,32a,32a"
the result will be something like this
2=29s
2=5a
13=32a
1=8
1=20
1=7s
This is the correct alpha (string) sort order.
when it should be
13=32a
2=29s
2=5a
1=8
1=20
1=7s

You want a numeric sort order so you need to convert the strings to numbers
before doing the sort. This is the line that needs changing:

If StrComp(strDict(X,intSort),strDict(Y,intSort),vbTe xtCompare) > 0 Then

Change it to
If CInt(strDict(X,intSort)) > CInt(strDict(Y,intSort)) Then

HTH,
Bob Barrows

--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"
Jul 19 '05 #6

P: n/a
"Bob Barrows" wrote:
: NiQ wrote:
: > hi ronald
: > thanks again for your great help , i am just having a little problem
: > when i increase the number of one exisitence more than 10 then it
: > sorts it verz strangly i want to sort on the number of occourences
: > with the code u wrote can u try this array
: > thearray =
: >
:
"32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32a,32a,32a ,32a,32a,32a,32a,32a,32a"
: >
: > the result will be something like this
: > 2=29s
: > 2=5a
: > 13=32a
: > 1=8
: > 1=20
: > 1=7s
:
: This is the correct alpha (string) sort order.
: >
: > when it should be
: > 13=32a
: > 2=29s
: > 2=5a
: > 1=8
: > 1=20
: > 1=7s
: >
:
:
: You want a numeric sort order so you need to convert the strings to
numbers
: before doing the sort. This is the line that needs changing:
:
: If StrComp(strDict(X,intSort),strDict(Y,intSort),vbTe xtCompare) > 0 Then
:
: Change it to
: If CInt(strDict(X,intSort)) > CInt(strDict(Y,intSort)) Then

I changed the whole function so you can pass text or numeric so the sort
routine could be reusable in the future.
http://kiddanger.com/lab/array.asp

Thanks for your help Bob. (O:=

--
Roland Hall
/* This information is distributed in the hope that it will be useful, but
without any warranty; without even the implied warranty of merchantability
or fitness for a particular purpose. */
Technet Script Center - http://www.microsoft.com/technet/scriptcenter/
WSH 5.6 Documentation - http://msdn.microsoft.com/downloads/list/webdev.asp
MSDN Library - http://msdn.microsoft.com/library/default.asp
Jul 19 '05 #7

P: n/a
Roland Hall wrote:

I changed the whole function so you can pass text or numeric so the
sort routine could be reusable in the future.
http://kiddanger.com/lab/array.asp

Thanks for your help Bob. (O:=


:-)
What if a date comparison is needed ... ? Or Doubles?

Bob Barrows

--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get a
quicker response by posting to the newsgroup.
Jul 19 '05 #8

P: n/a
NiQ
hi Roland,
there is something wrong . it take the count sort as character i.e if
the

occourance is 102 then it will come with all 1's then all 2's

thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a,32a,32a,32a,32a,32a,32a,32a,32a,32a"

try with this and you will see what i mean .

i tried a little but can get it work . may be you can help

thanks a lot

regards
niq

ni*****@yahoo.com (NiQ) wrote in message news:<cd**************************@posting.google. com>...
thanks a lot to both of you . i will try these codes and will post
incase of any furthur help . but i really appreciate this thanks a
lot.

regards
niq

"Roland Hall" <nobody@nowhere> wrote in message news:<uD**************@TK2MSFTNGP11.phx.gbl>...
"NiQ" wrote:
: i have an array of strings with contains words and i want a distinct
: list of array with the count of each number repeat i.e how many time
: it exist in the array and the final result should be sorted according
: to the number of repeat from hight to low .
: for example
:
: thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"
: the result should be
: 32a
: 29s
: 5a
: 7s
: 20
: 8
: but i want to modify it to do the sort according to the count of each
: element from high to low

NiQ...

I took a different approach and chose to use a dictionary.

I took your string and split it to create an array of elements.

I took the elements of the array and created a dictionary but only to add
unique keys so the result was 6 keys. I then created another dictionary,
comparing with the first dictionary keys to find the duplicates and then
incremented the value of the items. After that I used a dictionary sort I
found at Microsoft and modified it so I could pass the order to return the
results.

This is my solution. There is a link on the page to view the source.

http://kiddanger.com/lab/array.asp

HTH...

Jul 19 '05 #9

P: n/a
"NiQ" wrote:
: hi Roland,
: there is something wrong . it take the count sort as character i.e if
: the
:
: occourance is 102 then it will come with all 1's then all 2's
:
:
thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a,32a,32a,32a,32a,32a,32a,
32a,32a,32a"
:
: try with this and you will see what i mean .
:
: i tried a little but can get it work . may be you can help

I did and it works fine. Perhaps you missed my other post following Bob's
first post on this thread. The example is running with the above value.

--
Roland Hall
/* This information is distributed in the hope that it will be useful, but
without any warranty; without even the implied warranty of merchantability
or fitness for a particular purpose. */
Technet Script Center - http://www.microsoft.com/technet/scriptcenter/
WSH 5.6 Documentation - http://msdn.microsoft.com/downloads/list/webdev.asp
MSDN Library - http://msdn.microsoft.com/library/default.asp
Jul 19 '05 #10

This discussion thread is closed

Replies have been disabled for this discussion.