How to sort an array in a single loop?
Given an array of size N, the task is to sort this array using a single loop.
How the array is sorted usually?
There are many ways by which the array can be sorted in ascending order, like:
In any of these methods, more than 1 loops is used.
Can the array the sorted using a single loop?
Since all the known sorting methods use more than 1 loop, it is hard to imagine to do the same with a single loop. Practically, it is not impossible to do so. But doing so won’t be the most efficient.
Example 1: Below code will sort an array with integer elements.
C++
#include<bits/stdc++.h>
using namespace std;
int *sortArrays( int arr[], int length)
{
for ( int j = 0; j < length - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
j = -1;
}
}
return arr;
}
int main()
{
int arr[] = { 1, 2, 99, 9, 8,
7, 6, 0, 5, 4, 3 };
int length = sizeof (arr)/ sizeof (arr[0]);
string str;
for ( int i: arr)
{
str += to_string(i)+ " " ;
}
cout<< "Original array: ["
<< str << "]" << endl;
int *arr1;
arr1 = sortArrays(arr, length);
string str1;
for ( int i = 0; i < length; i++)
{
str1 += to_string(arr1[i])+ " " ;
}
cout << "Sorted array: ["
<< (str1) << "]" ;
}
|
Java
import java.util.*;
class Geeks_For_Geeks {
public static int [] sortArrays( int [] arr)
{
int length = arr.length;
for ( int j = 0 ; j < length - 1 ; j++) {
if (arr[j] > arr[j + 1 ]) {
int temp = arr[j];
arr[j] = arr[j + 1 ];
arr[j + 1 ] = temp;
j = - 1 ;
}
}
return arr;
}
public static void main(String args[])
{
int arr[] = { 1 , 2 , 99 , 9 , 8 ,
7 , 6 , 0 , 5 , 4 , 3 };
System.out.println( "Original array: "
+ Arrays.toString(arr));
arr = sortArrays(arr);
System.out.println( "Sorted array: "
+ Arrays.toString(arr));
}
}
|
Python3
def sortArrays(arr):
length = len (arr)
j = 0
while j < length - 1 :
if (arr[j] > arr[j + 1 ]):
temp = arr[j]
arr[j] = arr[j + 1 ]
arr[j + 1 ] = temp
j = - 1
j + = 1
return arr
if __name__ = = '__main__' :
arr = [ 1 , 2 , 99 , 9 , 8 ,
7 , 6 , 0 , 5 , 4 , 3 ]
print ( "Original array: " , arr)
arr = sortArrays(arr)
print ( "Sorted array: " , arr)
|
C#
using System;
class GFG
{
public static int [] sortArrays( int [] arr)
{
int length = arr.Length;
for ( int j = 0; j < length - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
j = -1;
}
}
return arr;
}
public static void Main(String []args)
{
int []arr = { 1, 2, 99, 9, 8,
7, 6, 0, 5, 4, 3 };
Console.WriteLine( "Original array: " +
String.Join( ", " , arr));
arr = sortArrays(arr);
Console.WriteLine( "Sorted array: " +
String.Join( ", " , arr));
}
}
|
Javascript
<script>
function sortArrays(arr)
{
let length = arr.length;
for (let j = 0; j < length - 1; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
j = -1;
}
}
return arr;
}
let arr=[1, 2, 99, 9, 8,
7, 6, 0, 5, 4, 3];
document.write( "Original array: ["
+ (arr).join( ", " )+ "]<br>" );
arr = sortArrays(arr);
document.write( "Sorted array: ["
+ arr.join( ", " )+ "]<br>" );
</script>
|
Output:
Original array: [1, 2, 99, 9, 8, 7, 6, 0, 5, 4, 3]
Sorted array: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99]
Example 2: Below code will sort an array of Strings.
C++
#include<bits/stdc++.h>
using namespace std;
char * sortArrays( char arr[], int length)
{
for ( int j = 0; j < length - 1; j++)
{
int d1 = arr[j];
int d2 = arr[j + 1];
if (d1 > d2)
{
char temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
j = -1;
}
}
return arr;
}
int main()
{
string geeks = "GEEKSFORGEEKS" ;
int n = geeks.length();
char arr[n];
for ( int i = 0; i < n; i++)
{
arr[i] = geeks[i];
}
cout<< "Original array: [" ;
for ( int i = 0; i < n; i++)
{
cout << arr[i];
if (i + 1 != n)
cout<< ", " ;
}
cout << "]" << endl;
char *ansarr;
ansarr = sortArrays(arr, n);
cout << "Sorted array: [" ;
for ( int i = 0; i < n; i++)
{
cout << ansarr[i];
if (i + 1 != n)
cout << ", " ;
}
cout << "]" << endl;
}
|
Java
import java.util.*;
class Geeks_For_Geeks {
public static char [] sortArrays( char [] arr)
{
int length = arr.length;
for ( int j = 0 ; j < arr.length - 1 ; j++) {
int d1 = arr[j];
int d2 = arr[j + 1 ];
if (d1 > d2) {
char temp = arr[j];
arr[j] = arr[j + 1 ];
arr[j + 1 ] = temp;
j = - 1 ;
}
}
return arr;
}
public static void main(String args[])
{
String geeks = "GEEKSFORGEEKS" ;
char arr[] = geeks.toCharArray();
System.out.println( "Original array: "
+ Arrays.toString(arr));
arr = sortArrays(arr);
System.out.println( "Sorted array: "
+ Arrays.toString(arr));
}
}
|
Python3
def sortArrays(arr, length):
j = 0
while (j < length - 1 ):
d1 = arr[j]
d2 = arr[j + 1 ]
if (d1 > d2):
temp = arr[j]
arr[j] = arr[j + 1 ]
arr[j + 1 ] = temp
j = - 1
j + = 1
return arr
geeks = "GEEKSFORGEEKS"
n = len (geeks)
arr = [ 0 ] * n
for i in range (n):
arr[i] = geeks[i]
print ( "Original array: [" ,end = "")
for i in range (n):
print (arr[i],end = "")
if (i + 1 ! = n):
print ( ", " ,end = "")
print ( "]" )
ansarr = sortArrays(arr, n)
print ( "Sorted array: [" ,end = "")
for i in range (n):
print (ansarr[i],end = "")
if (i + 1 ! = n):
print ( ", " ,end = "")
print ( "]" )
|
C#
using System;
class GFG
{
public static char [] sortArrays( char [] arr)
{
int length = arr.Length;
for ( int j = 0; j < arr.Length - 1; j++)
{
int d1 = arr[j];
int d2 = arr[j + 1];
if (d1 > d2)
{
char temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
j = -1;
}
}
return arr;
}
public static void Main(String []args)
{
String geeks = "GEEKSFORGEEKS" ;
char []arr = geeks.ToCharArray();
Console.WriteLine( "Original array: [" +
String.Join( ", " , arr) + "]" );
arr = sortArrays(arr);
Console.WriteLine( "Sorted array: [" +
String.Join( ", " , arr) + "]" );
}
}
|
Javascript
<script>
function sortArrays(arr)
{
let length = arr.length;
for (let j = 0; j < length - 1; j++)
{
let d1 = arr[j];
let d2 = arr[j + 1];
if (d1 > d2)
{
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
j = -1;
}
}
return arr;
}
let geeks = "GEEKSFORGEEKS" ;
let arr = geeks.split( "" );
document.write( "Original array: ["
+ arr.join( ", " )+ "]<br>" );
arr = sortArrays(arr);
document.write( "Sorted array: ["
+ (arr).join( ", " )+ "]<br>" );
</script>
|
Output:
Original array: [G, E, E, K, S, F, O, R, G, E, E, K, S]
Sorted array: [E, E, E, E, F, G, G, K, K, O, R, S, S]
Is sorting array in single loop better than sorting in more than one loop?
Sorting in a single loop, though it seems to be better, is not an efficient approach. Below are some points to be taken into consideration before using single loop sorting:
- Using a single loop only helps in shorter code
- The time complexity of the sorting does not change in a single loop (in comparison to more than one loop sorting)
- Single loop sorting shows that number of loops has little to do with time complexity of the algorithm.
Last Updated :
11 Jun, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...