aspose file tools*
The moose likes Programming Diversions and the fly likes Can we sort using a single loop? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Other » Programming Diversions
Bookmark "Can we sort using a single loop?" Watch "Can we sort using a single loop?" New topic
Author

Can we sort using a single loop?

Pavan Kumar Dittakavi
Ranch Hand

Joined: Feb 12, 2011
Posts: 104

Hi All,

I want to know if this is possible:" Writing a program that sorts an array by using only a single loop."; I dont want the solution but I wanted to know if this is really feasible.

Thanks,
Pavan.
anirudh jagithyala
Ranch Hand

Joined: Dec 07, 2010
Posts: 41


where 'x' is the integer array name, 'n' is the number of elements in 'x'.
This for loop sorts the elements of the array in ascending order. To sort in descending order, change "if ( x[ i ] < x[ i + 1 ] )" to "if ( x[ i ] > x[ i + 1 ] )"

I have no way of testing all of these, but I'm pretty sure they'll work.
Pavan Kumar Dittakavi
Ranch Hand

Joined: Feb 12, 2011
Posts: 104

I think I have got it.


@anirudh jagithyala: The code you provided fails for input 5 1 7 3 9. Thanks anyway.

Thanks,
-Pavan.
Ryan McGuire
Ranch Hand

Joined: Feb 18, 2005
Posts: 1012
    
    3
Pavan Kumar Dittakavi wrote:Hi All,

I want to know if this is possible:" Writing a program that sorts an array by using only a single loop."; I dont want the solution but I wanted to know if this is really feasible.

Thanks,
Pavan.


Short answer: Any algorithm can be reworked as a single loop.

For this problems, you can implement what amounts to a bubble sort by using two indices (say i and j) and just have all the initialization, incrementing and termination expressions in a handful of if/then/else statements at the bottom of the single loop. It would still execute in O(n^2) time, but it would technically be a single loop.
Abhishek K Sharma
Greenhorn

Joined: Sep 21, 2014
Posts: 2
Hi All,

I think we can sort the following way. Not sure about the complexity.

public class SingleLoopSorting {
public static void main(String[] args) {
int arr[] = { 5, 1, 7, 3, 9 };
for (int i = 1; i < arr.length; i++) {
if (arr[i] < arr[i - 1]) {
arr[i] = arr[i] + arr[i - 1];
arr[i - 1] = arr[i] - arr[i - 1];
arr[i] = arr[i] - arr[i - 1];
i = 0;
}
}
System.out.print("Sorted Array : ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
Chris Barrett
Ranch Hand

Joined: Dec 05, 2013
Posts: 231
    
  12

Hi Abhishek,

Welcome to the Ranch!

I imagine the OP from 3 years ago has moved on, but thank you for contributing.
In the future, please wrap your code using Code Tags (← click here if you are not sure how).

Code Tags will make your code much easier for everyone to read, as demonstrated here:

Cheers!
Chris


OCAJP7 [86%] | Personal Blog
Abhishek K Sharma
Greenhorn

Joined: Sep 21, 2014
Posts: 2
Hey Chris,
Sure I will do that. I posted the reply thinking that it might be helpful to some other person.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Can we sort using a single loop?