# sort items in an array

hi all.
I have an array , and I want to sort 3 items in that array(known values) in accending order without disterbing the others.for example if my array is
{ 1, 2, 20, 90, 30, 130, 10, 190 ,52 }
I want to sort three items contain 10, 20, 30 so the output would be
{ 1, 2, 10, 90, 20, 130, 30, 190 ,52 }. It sounds easy but I couldn't get it right.This is what I have done
public static void main(String[] args)
{
int[]num = { 1, 2, 20, 90, 30, 130, 10, 190 ,52 };
int temp;
for(int i =0; i<num.length; i++)
{
if (num[i] == 10)
{
temp = num[i];
for (int j=0; j<num.length; j++)
{
if (num[j] == 20)
{
num[i] = num[j];

num[j] = temp;
}
if (i == j)
num[i] = num[j];
}
}
}
for (int i =0; i<num.length; i++)
System.out.print (num[i] + " ");
}
}It doesn't do any thing good
Pease , anyone can show me a good way to dothis.
thank
###### Who is Participating?

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Commented:
Something like:

static void sort() {
int[] num = { 1, 2, 20, 90, 30, 130, 10, 190 ,52 };
int firstN = 3; //sort first n items
int temp;
for(int i = 0; i < num.length; i++) {
for(int j = 0;j < firstN;j++) {
if (num[i] < num[j]) {
temp = num[j];
num[j] = num[i];
num[i] = temp;
}
}
}
for(int i = 0;i < num.length;i++) {
System.out.println(num[i]);
}
}
0
Author Commented:
I dont really get it CEHJ.
what I want to do here is given 3 items in the array which their value is 10 20 and 30.
I dont know index of there 3 numbers.
I need  to swap there 3 item so they will be sorted in order 10 befor 20 befor 30 without messing up these other items in the array
0
Commented:
Sorry - thought you wanted just the first 3 sorted. Not particularly pretty, but works:

static void sort() {
int[] num = {1, 2, 20, 90, 30, 130, 10, 190, 52};
//sort first n items
int temp;
for (int i = num.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if ((num[i] == 10 || num[i] == 20 || num[i] == 30) && (num[j] == 10 || num[j] == 20 || num[j] == 30)) {
if (num[i] < num[j]) {
temp = num[j];
num[j] = num[i];
num[i] = temp;
}
}
}
}
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
0

Experts Exchange Solution brought to you by

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Author Commented:
Unbelievable!
I Wish I have some of your talent, CEHJ
Thank you so much.

Best regard.
0
Commented:
8-)

You could parameterize the target numbers by passing an array of target int, creating a Set of Integer and calling another function like

boolean isTargetNumber() {}
0
###### It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.