# Program for sorting variables of any data type

• Difficulty Level : Medium
• Last Updated : 27 Jan, 2018

Write a program for sorting variables of any datatype without the use of std::sort .

Examples:

```Input :  2000, 456, -10, 0
Output : -10   0   456   2000

Input :  "We do nothing"
"Hi I have something"
"Hello Join something!"
"(Why to do work)"
Output :(Why to do work)
Hello Join something!
Hi I have something
We do nothing
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

The examples above show, we can have any data type elements present as an input and output will be in a sorted form of the input data.
The idea here to solve this problem is to make a template.

Method 1 (Writing our own sort) In below code, we have implemented Bubble Sort to sort the array.

 `// CPP program to sort array of any data types.``#include ``using` `namespace` `std;`` ` `// Template formed so that sorting of any ``// type variable is possible``template` `<``class` `T>``void` `sortArray(T a[], ``int` `n)``{   ``    ``// boolean variable to check that ``    ``// whether it is sorted or not``    ``bool` `b = ``true``;``    ``while` `(b) {``        ``b = ``false``;``        ``for` `(``size_t` `i=0; i a[i + 1]) {``                ``T temp = a[i];``                ``a[i] = a[i + 1];``                ``a[i + 1] = temp;``                ``b = ``true``;``            ``}``        ``}``    ``}``}`` ` `// Template formed so that sorting of any ``// type variable is possible``template` `<``class` `T>``void` `printArray(T a[], ``int` `n)``{``    ``for` `(``size_t` `i = 0; i < n; ++i) ``        ``cout << a[i] << ``"   "``;    ``    ``cout << endl;``}`` ` `// Driver code``int` `main()``{``    ``int` `n = 4;``    ``int` `intArr[n] = { 2000, 456, -10, 0 };``    ``sortArray(intArr, n);``    ``printArray(intArr, n);`` ` `    ``string strArr[n] = { ``"We do nothing"``,``                         ``"Hi I have something"``,``                         ``"Hello Join something!"``,``                        ``"(Why to do work)"` `};``    ``sortArray(strArr, n);``    ``printArray(strArr, n);`` ` `    ``float` `floatArr[n] = { 23.4, 11.4, -9.7, 11.17 };``    ``sortArray(floatArr, n);``    ``printArray(floatArr, n);`` ` `    ``return` `0;``}`

Output:

```-10   0   456   2000
(Why to do work)   Hello Join something!   Hi I have something   We do nothing
-9.7   11.17   11.4   23.4
```

Method 2 (Using Library Function)
We can use std::sort in C++ to sort array of any data type.

 `// CPP program to sort array of any data types.``#include ``using` `namespace` `std;`` ` `// Template formed so that sorting of any ``// type variable is possible``template` `<``class` `T>``void` `printArray(T a[], ``int` `n)``{``    ``for` `(``size_t` `i = 0; i < n; ++i) ``        ``cout << a[i] << ``"   "``;    ``    ``cout << endl;``}`` ` `// Driver code``int` `main()``{``    ``int` `n = 4;``    ``int` `intArr[n] = { 2000, 456, -10, 0 };``    ``sort(intArr, intArr + n);``    ``printArray(intArr, n);`` ` `    ``string strArr[n] = { ``"We do nothing"``,``                         ``"Hi I have something"``,``                         ``"Hello Join something!"``,``                        ``"(Why to do work)"` `};``    ``sort(strArr, strArr + n);``    ``printArray(strArr, n);`` ` `    ``float` `floatArr[n] = { 23.4, 11.4, -9.7, 11.17 };``    ``sort(floatArr, floatArr+n);``    ``printArray(floatArr, n);`` ` `    ``return` `0;``}`

Output:

```-10   0   456   2000
(Why to do work)   Hello Join something!   Hi I have something   We do nothing
-9.7   11.17   11.4   23.4
```

My Personal Notes arrow_drop_up