How to sort an array in a single loop?
Last Updated :
11 Jun, 2021
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++
// C++ code to sort an array of integers
// with the help of single loop
#include<bits/stdc++.h>
using namespace std;
// Function for Sorting the array
// using a single loop
int *sortArrays(int arr[], int length)
{
// Sorting using a single loop
for (int j = 0; j < length - 1; j++)
{
// Checking the condition for two
// simultaneous elements of the array
if (arr[j] > arr[j + 1])
{
// Swapping the elements.
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
// updating the value of j = -1
// so after getting updated for j++
// in the loop it becomes 0 and
// the loop begins from the start.
j = -1;
}
}
return arr;
}
// Driver code
int main()
{
// Declaring an integer array of size 11.
int arr[] = { 1, 2, 99, 9, 8,
7, 6, 0, 5, 4, 3 };
// Printing the original Array.
int length = sizeof(arr)/sizeof(arr[0]);
string str;
for (int i: arr)
{
str += to_string(i)+" ";
}
cout<<"Original array: ["
<< str << "]" << endl;
// Sorting the array using a single loop
int *arr1;
arr1 = sortArrays(arr, length);
// Printing the sorted array.
string str1;
for (int i = 0; i < length; i++)
{
str1 += to_string(arr1[i])+" ";
}
cout << "Sorted array: ["
<< (str1) << "]";
}
// This code is contributed by Rajout-Ji
Java
// Java code to sort an array of integers
// with the help of single loop
import java.util.*;
class Geeks_For_Geeks {
// Function for Sorting the array
// using a single loop
public static int[] sortArrays(int[] arr)
{
// Finding the length of array 'arr'
int length = arr.length;
// Sorting using a single loop
for (int j = 0; j < length - 1; j++) {
// Checking the condition for two
// simultaneous elements of the array
if (arr[j] > arr[j + 1]) {
// Swapping the elements.
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
// updating the value of j = -1
// so after getting updated for j++
// in the loop it becomes 0 and
// the loop begins from the start.
j = -1;
}
}
return arr;
}
// Declaring main method
public static void main(String args[])
{
// Declaring an integer array of size 11.
int arr[] = { 1, 2, 99, 9, 8,
7, 6, 0, 5, 4, 3 };
// Printing the original Array.
System.out.println("Original array: "
+ Arrays.toString(arr));
// Sorting the array using a single loop
arr = sortArrays(arr);
// Printing the sorted array.
System.out.println("Sorted array: "
+ Arrays.toString(arr));
}
}
Python3
# Python3 code to sort an array of integers
# with the help of single loop
# Function for Sorting the array
# using a single loop
def sortArrays(arr):
# Finding the length of array 'arr'
length = len(arr)
# Sorting using a single loop
j = 0
while j < length - 1:
# Checking the condition for two
# simultaneous elements of the array
if (arr[j] > arr[j + 1]):
# Swapping the elements.
temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
# updating the value of j = -1
# so after getting updated for j++
# in the loop it becomes 0 and
# the loop begins from the start.
j = -1
j += 1
return arr
# Driver Code
if __name__ == '__main__':
# Declaring an integer array of size 11.
arr = [1, 2, 99, 9, 8,
7, 6, 0, 5, 4, 3]
# Printing the original Array.
print("Original array: ", arr)
# Sorting the array using a single loop
arr = sortArrays(arr)
# Printing the sorted array.
print("Sorted array: ", arr)
# This code is contributed by Mohit Kumar
C#
// C# code to sort an array of integers
// with the help of single loop
using System;
class GFG
{
// Function for Sorting the array
// using a single loop
public static int[] sortArrays(int[] arr)
{
// Finding the length of array 'arr'
int length = arr.Length;
// Sorting using a single loop
for (int j = 0; j < length - 1; j++)
{
// Checking the condition for two
// simultaneous elements of the array
if (arr[j] > arr[j + 1])
{
// Swapping the elements.
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
// updating the value of j = -1
// so after getting updated for j++
// in the loop it becomes 0 and
// the loop begins from the start.
j = -1;
}
}
return arr;
}
// Driver Code
public static void Main(String []args)
{
// Declaring an integer array of size 11.
int []arr = { 1, 2, 99, 9, 8,
7, 6, 0, 5, 4, 3 };
// Printing the original Array.
Console.WriteLine("Original array: " +
String.Join(", ", arr));
// Sorting the array using a single loop
arr = sortArrays(arr);
// Printing the sorted array.
Console.WriteLine("Sorted array: " +
String.Join(", ", arr));
}
}
// This code is contributed by Rajput-Ji
JavaScript
<script>
// Javascript code to sort an array of integers
// with the help of single loop
// Function for Sorting the array
// using a single loop
function sortArrays(arr)
{
// Finding the length of array 'arr'
let length = arr.length;
// Sorting using a single loop
for (let j = 0; j < length - 1; j++) {
// Checking the condition for two
// simultaneous elements of the array
if (arr[j] > arr[j + 1]) {
// Swapping the elements.
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
// updating the value of j = -1
// so after getting updated for j++
// in the loop it becomes 0 and
// the loop begins from the start.
j = -1;
}
}
return arr;
}
// Declaring main method
let arr=[1, 2, 99, 9, 8,
7, 6, 0, 5, 4, 3];
document.write("Original array: ["
+ (arr).join(", ")+"]<br>");
// Sorting the array using a single loop
arr = sortArrays(arr);
// Printing the sorted array.
document.write("Sorted array: ["
+ arr.join(", ")+"]<br>");
// This code is contributed by patel2127
</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++
// C++ code to sort an array of Strings
// with the help of single loop
#include<bits/stdc++.h>
using namespace std;
// Function for Sorting the array using a single loop
char* sortArrays(char arr[], int length)
{
// Sorting using a single loop
for (int j = 0; j < length - 1; j++)
{
// Type Conversion of char to int.
int d1 = arr[j];
int d2 = arr[j + 1];
// Comparing the ascii code.
if (d1 > d2)
{
// Swapping of the characters
char temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
j = -1;
}
}
return arr;
}
// Driver code
int main()
{
// Declaring a String
string geeks = "GEEKSFORGEEKS";
int n = geeks.length();
// declaring character array
char arr[n];
// copying the contents of the
// string to char array
for(int i = 0; i < n; i++)
{
arr[i] = geeks[i];
}
// Printing the original Array.
cout<<"Original array: [";
for(int i = 0; i < n; i++)
{
cout << arr[i];
if(i + 1 != n)
cout<<", ";
}
cout << "]" << endl;
// Sorting the array using a single loop
char *ansarr;
ansarr = sortArrays(arr, n);
// Printing the sorted array.
cout << "Sorted array: [";
for(int i = 0; i < n; i++)
{
cout << ansarr[i];
if(i + 1 != n)
cout << ", ";
}
cout << "]" << endl;
}
// This code is contributed by Rajput-Ji
Java
// Java code to sort an array of Strings
// with the help of single loop
import java.util.*;
class Geeks_For_Geeks {
// Function for Sorting the array using a single loop
public static char[] sortArrays(char[] arr)
{
// Finding the length of array 'arr'
int length = arr.length;
// Sorting using a single loop
for (int j = 0; j < arr.length - 1; j++) {
// Type Conversion of char to int.
int d1 = arr[j];
int d2 = arr[j + 1];
// Comparing the ascii code.
if (d1 > d2) {
// Swapping of the characters
char temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
j = -1;
}
}
return arr;
}
// Declaring main method
public static void main(String args[])
{
// Declaring a String
String geeks = "GEEKSFORGEEKS";
// Declaring a character array
// to store characters of geeks in it.
char arr[] = geeks.toCharArray();
// Printing the original Array.
System.out.println("Original array: "
+ Arrays.toString(arr));
// Sorting the array using a single loop
arr = sortArrays(arr);
// Printing the sorted array.
System.out.println("Sorted array: "
+ Arrays.toString(arr));
}
}
Python3
# Python3 code to sort an array of Strings
# with the help of single loop
# Function for Sorting the array using a single loop
def sortArrays(arr, length):
# Sorting using a single loop
j = 0
while(j < length - 1):
# Type Conversion of char to int.
d1 = arr[j]
d2 = arr[j + 1]
# Comparing the ascii code.
if (d1 > d2):
# Swapping of the characters
temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
j = -1
j += 1
return arr
# Driver code
# Declaring a String
geeks = "GEEKSFORGEEKS"
n = len(geeks)
# declaring character array
arr=[0]*n
# copying the contents of the
# string to char array
for i in range(n):
arr[i] = geeks[i]
# Printing the original Array.
print("Original array: [",end="")
for i in range(n):
print(arr[i],end="")
if (i + 1 != n):
print(", ",end="")
print("]")
# Sorting the array using a single loop
ansarr = sortArrays(arr, n)
# Printing the sorted array.
print("Sorted array: [",end="")
for i in range(n):
print(ansarr[i],end="")
if (i + 1 != n):
print(", ",end="")
print("]")
# This code is contributed by shubhamsingh10
C#
// C# code to sort an array of Strings
// with the help of single loop
using System;
class GFG
{
// Function for Sorting the array
// using a single loop
public static char[] sortArrays(char[] arr)
{
// Finding the length of array 'arr'
int length = arr.Length;
// Sorting using a single loop
for (int j = 0; j < arr.Length - 1; j++)
{
// Type Conversion of char to int.
int d1 = arr[j];
int d2 = arr[j + 1];
// Comparing the ascii code.
if (d1 > d2)
{
// Swapping of the characters
char temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
j = -1;
}
}
return arr;
}
// Declaring main method
public static void Main(String []args)
{
// Declaring a String
String geeks = "GEEKSFORGEEKS";
// Declaring a character array
// to store characters of geeks in it.
char []arr = geeks.ToCharArray();
// Printing the original Array.
Console.WriteLine("Original array: [" +
String.Join(", ", arr) + "]");
// Sorting the array using a single loop
arr = sortArrays(arr);
// Printing the sorted array.
Console.WriteLine("Sorted array: [" +
String.Join(", ", arr) + "]");
}
}
// This code is contributed by PrinciRaj1992
JavaScript
<script>
// JavaScript code to sort an array of integers
// with the help of single loop
// Function for Sorting the array
// using a single loop
function sortArrays(arr)
{
// Finding the length of array 'arr'
let length = arr.length;
// Sorting using a single loop
for (let j = 0; j < length - 1; j++)
{
// Type Conversion of char to int.
let d1 = arr[j];
let d2 = arr[j + 1];
// Comparing the ascii code.
if (d1 > d2)
{
// Swapping of the characters
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
j = -1;
}
}
return arr;
}
// Declaring a String
let geeks = "GEEKSFORGEEKS";
// Declaring a character array
// to store characters of geeks in it.
let arr = geeks.split("");
document.write("Original array: ["
+ arr.join(", ")+"]<br>");
// Sorting the array using a single loop
arr = sortArrays(arr);
// Printing the sorted array.
document.write("Sorted array: ["
+ (arr).join(", ")+"]<br>");
// This code is contributed by shivanisinghss2110
</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.
Similar Reads
How to sort an Array of Strings in Java Array Of StringsTo sort an array of strings in Java, we can use Arrays.sort() function. Java // A sample Java program to // sort an array of strings // in ascending and descending // orders using Arrays.sort(). import java.util.Arrays; import java.util.Collections; // Driver Class public class SortE
3 min read
How to sort an array of dates in C/C++? Given an array of dates, how to sort them. Example: Input: Date arr[] = {{20, 1, 2014}, {25, 3, 2010}, { 3, 12, 1676}, {18, 11, 1982}, {19, 4, 2015}, { 9, 7, 2015}} Output: Date arr[] = {{ 3, 12, 1676}, {18, 11, 1982}, {25, 3, 2010}, {20, 1, 2014}, {19, 4, 2015}, { 9, 7, 2015}} We strongly recommend
3 min read
How to sort an Array in C# | Array.Sort() Method Set â 2 Array.Sort Method is used to sort elements in a one-dimensional array. There are 17 methods in the overload list of this method. Here we will discuss the following methods: Sort(Array, Int32, Int32, IComparer) Method Sort(Array, Array, Int32, Int32, IComparer) Method Sort(Array, Int32, Int32) Method
9 min read
How to sort an Array in C# | Array.Sort() Method Set â 3 Array.Sort Method is used to sort elements in a one-dimensional array. There are 17 methods in the overload list of this method. Here we will discuss the following methods: Sort(Array, IComparer) Method Sort(Array, Array, IComparer) Method Sort(Array, Array) Method Sort(Array, IComparer) Method This
6 min read
How to Sort an Array in C# | Array.Sort() Method Set - 1 Array.Sort Method in C# is used to sort elements in a one-dimensional array. There are 17 methods in the overload list of this method as follows:Sort<T>(T[]) MethodSort<T>(T[], IComparer<T>) MethodSort<T>(T[], Int32, Int32) MethodSort<T>(T[], Comparison<T>) Method
8 min read
How to sort an Array in C# | Array.Sort() Method | Set â 4 Array.Sort Method is used to sort elements in a one-dimensional array. There are 17 methods in the overload list of this method. Here we will discuss the following methods: Sort(Array) Method This method sorts the elements in an entire one-dimensional array using the IComparable implementation of ea
5 min read
How to sort an Array in C# | Array.Sort() Method | Set â 5 Array.Sort Method is used to sort elements in a one-dimensional array. There are 17 methods in the overload list of this method. Here we will discuss the following methods: Sort<TKey, TValue>(TKey[], TValue[], IComparer<TKey>) Method This method sorts a pair of array objects based on the
7 min read
Sort an array in wave form Given an unsorted array of integers, sort the array into a wave array. An array arr[0..n-1] is sorted in wave form if: arr[0] >= arr[1] <= arr[2] >= arr[3] <= arr[4] >= .....Input: arr[] = {10, 5, 6, 3, 2, 20, 100, 80}Output: arr[] = {10, 5, 6, 2, 20, 3, 100, 80} Explanation: here you
9 min read
Sorting an Array in Bash using Insertion Sort Given an array, arr[] of size N, the task is to sort the array in ascending order using Insertion Sort in bash scripting. Examples: Input: arr[] = {9, 7, 2, 5}Output: 2 5 7 9Explanation: The array in sorted order is {2, 5, 7, 9} Input: arr[] = {3, 2, 1}Output: 1 2 3Explanation: The array in sorted o
2 min read
Javascript Program to Sort an array in wave form Given an unsorted array of integers, sort the array into a wave like array. An array 'arr[0..n-1]' is sorted in wave form if arr[0] >= arr[1] <= arr[2] >= arr[3] <= arr[4] >= .....Examples: Input: arr[] = {10, 5, 6, 3, 2, 20, 100, 80} Output: arr[] = {10, 5, 6, 2, 20, 3, 100, 80} OR {
4 min read