+ 1

# Output of counting sort far from what I expected

This is a counting sort algorithm. I was expecting it to output an ascending order array but it outputs something else. I've been working for these for the past 30 minutes and I'm really confused. Can someone hint me how I should fix this? Is there something wrong with my code? PS: This is just a snippet, so it really doesn't work here https://code.sololearn.com/cKwTwJTYdsQm/?ref=app

5 ответов

+ 1

if you sort int numbers, change core like this:
//...
int loc = 0, tindex=-1; // added tindex
for(int j: temp) {
tindex++; // added
if(j > 0) {
for(int k = 0; k < j; k++) {
//arr[loc] = index(temp, j)+1;
arr[loc] = tindex;
//temp[index(temp, j)-1] = -1;
loc++;
} } }
//...
or use for(int j =0; j<temp.length; j++) instead, then tindex= j

+ 1

tindex is a position in temp, j is only value at this position
it works if you sort int numbers, in this case it corresponds with value in output array.
if you sort something other eg chars, you need to get value for output array different way, eg for chars it is (char) tindex.

+ 1

zemiak I got it working now, thank you so much!

0

~ swim ~ I am confident that there is something wrong with the countingSort method. I'll try to post the full code later. Thanks

0

zemiak I'm sorry, what does the "tindex" do in that case?