{"id":25268,"date":"2017-10-15T16:57:55","date_gmt":"2017-10-15T11:27:55","guid":{"rendered":"https:\/\/www.wikitechy.com\/technology\/?p=25268"},"modified":"2018-11-01T13:15:04","modified_gmt":"2018-11-01T07:45:04","slug":"sort-array-wave-form","status":"publish","type":"post","link":"https:\/\/www.wikitechy.com\/technology\/sort-array-wave-form\/","title":{"rendered":"Sort an array in wave form"},"content":{"rendered":"<p><span style=\"color: #008080;\"><strong>Sort an array in wave form<\/strong><\/span><\/p>\n<p>Given an unsorted array of integers, sort the array into a wave like array. An <a href=\"https:\/\/www.wikitechy.com\/tutorials\/javascript\/sort-array-of-objects-by-string-property-value-in-javascript\" target=\"_blank\" rel=\"noopener\">array<\/a> \u2018arr[0..n-1]\u2019 is sorted in wave form if arr[0] &gt;= arr[1] &lt;= arr[2] &gt;= arr[3] &lt;= arr[4] &gt;= \u2026..<span id=\"more-133397\"><\/span><\/p>\n<h3 id=\"examples\"><span style=\"color: #003366;\"><strong>Examples:<\/strong><\/span><\/h3>\n<pre> Input:  arr[] = {10, 5, 6, 3, 2, 20, 100, 80}\r\n Output: arr[] = {10, 5, 6, 2, 20, 3, 100, 80} OR\r\n                 {20, 5, 10, 2, 80, 6, 100, 3} OR\r\n                 any other array that is in wave form\r\n\r\n Input:  arr[] = {20, 10, 8, 6, 4, 2}\r\n Output: arr[] = {20, 8, 10, 4, 6, 2} OR\r\n                 {10, 8, 20, 2, 6, 4} OR\r\n                 any other array that is in wave form\r\n\r\n Input:  arr[] = {2, 4, 6, 8, 10, 20}\r\n Output: arr[] = {4, 2, 8, 6, 20, 10} OR\r\n                 any other array that is in wave form\r\n\r\n Input:  arr[] = {3, 6, 5, 10, 7, 20}\r\n Output: arr[] = {6, 3, 10, 5, 20, 7} OR\r\n                 any other array that is in wave form<\/pre>\n<p>A <strong>Simple Solution<\/strong> is to use sorting. First sort the input array, then swap all adjacent elements.<\/p>\n<p>For example, let the input array be {3, 6, 5, 10, 7, 20}. After <a href=\"https:\/\/www.wikitechy.com\/technology\/find-minimum-length-unsorted-subarray-sorting-makes-complete-array-sorted\/\" target=\"_blank\" rel=\"noopener\">sorting<\/a>, we get {3, 5, 6, 7, 10, 20}. After <a href=\"https:\/\/www.wikitechy.com\/tutorials\/c-programming\/swapping-of-two-numbers-in-c\" target=\"_blank\" rel=\"noopener\">swapping<\/a> adjacent elements, we get {5, 3, 7, 6, 20, 10}.<\/p>\n[ad type=&#8221;banner&#8221;]\n<p>Below are implementations of this simple approach.<\/p>\n<h2 id=\"c-implementation-of-sort-an-array-in-wave-form\"><span style=\"color: #ff0000;\"><strong>C++ Implementation of\u00a0Sort an array in wave form:<\/strong><\/span><\/h2>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">c++<\/span> <\/div> <pre class=\"language-cpp code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-cpp code-embed-code\">\/\/ A C++ program to sort an array in wave form using<br\/>\/\/ a sorting function<br\/>#include&lt;iostream&gt;<br\/>#include&lt;algorithm&gt;<br\/>using namespace std;<br\/> <br\/>\/\/ A utility method to swap two numbers.<br\/>void swap(int *x, int *y)<br\/>{<br\/>    int temp = *x;<br\/>    *x = *y;<br\/>    *y = temp;<br\/>}<br\/> <br\/>\/\/ This function sorts arr[0..n-1] in wave form, i.e., <br\/>\/\/ arr[0] &gt;= arr[1] &lt;= arr[2] &gt;= arr[3] &lt;= arr[4] &gt;= arr[5]..<br\/>void sortInWave(int arr[], int n)<br\/>{<br\/>    \/\/ Sort the input array<br\/>    sort(arr, arr+n);<br\/> <br\/>    \/\/ Swap adjacent elements<br\/>    for (int i=0; i&lt;n-1; i += 2)<br\/>        swap(&amp;arr[i], &amp;arr[i+1]);<br\/>}<br\/> <br\/>\/\/ Driver program to test above function<br\/>int main()<br\/>{<br\/>    int arr[] = {10, 90, 49, 2, 1, 5, 23};<br\/>    int n = sizeof(arr)\/sizeof(arr[0]);<br\/>    sortInWave(arr, n);<br\/>    for (int i=0; i&lt;n; i++)<br\/>       cout &lt;&lt; arr[i] &lt;&lt; &quot; &quot;;<br\/>    return 0;<br\/>}<\/code><\/pre> <\/div>\n<h3 id=\"output\"><span style=\"color: #008000;\"><strong>Output:<\/strong><\/span><\/h3>\n<pre>2 1 10 5 49 23 90<\/pre>\n<h2 id=\"java-implementation-of-sort-an-array-in-wave-form\"><span style=\"color: #ff0000;\"><strong>JAVA\u00a0<\/strong><\/span><span style=\"color: #ff0000;\"><strong>Implementation of\u00a0Sort an array in wave form:<\/strong><\/span><\/h2>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">java<\/span> <\/div> <pre class=\"language-java code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-java code-embed-code\">\/\/ Java implementation of naive method for sorting<br\/>\/\/ an array in wave form.<br\/>import java.util.*;<br\/> <br\/>class SortWave<br\/>{<br\/>    \/\/ A utility method to swap two numbers.<br\/>    void swap(int arr[], int a, int b)<br\/>    {<br\/>        int temp = arr[a];<br\/>        arr[a] = arr[b];<br\/>        arr[b] = temp;<br\/>    }<br\/> <br\/>    \/\/ This function sorts arr[0..n-1] in wave form, i.e.,<br\/>    \/\/ arr[0] &gt;= arr[1] &lt;= arr[2] &gt;= arr[3] &lt;= arr[4]..<br\/>    void sortInWave(int arr[], int n)<br\/>    {<br\/>        \/\/ Sort the input array<br\/>        Arrays.sort(arr);<br\/> <br\/>        \/\/ Swap adjacent elements<br\/>        for (int i=0; i&lt;n-1; i += 2)<br\/>            swap(arr, i, i+1);<br\/>    }<br\/> <br\/>    \/\/ Driver method<br\/>    public static void main(String args[])<br\/>    {<br\/>        Test ob = new Test();<br\/>        int arr[] = {10, 90, 49, 2, 1, 5, 23};<br\/>        int n = arr.length;<br\/>        ob.sortInWave(arr, n);<br\/>        for (int i : arr)<br\/>            System.out.print(i + &quot; &quot;);<br\/>    }<br\/>}<\/code><\/pre> <\/div>\n<h3 id=\"output-2\"><span style=\"color: #008000;\"><strong>Output:<\/strong><\/span><\/h3>\n<pre>2 1 10 5 49 23 90<\/pre>\n<h2 id=\"python\"><span style=\"color: #ff0000;\"><strong>PYTHON<\/strong><\/span><\/h2>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">python<\/span> <\/div> <pre class=\"language-python code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-python code-embed-code\"># Python function to sort the array arr[0..n-1] in wave form,<br\/># i.e., arr[0] &gt;= arr[1] &lt;= arr[2] &gt;= arr[3] &lt;= arr[4] &gt;= arr[5]<br\/>def sortInWave(arr, n):<br\/>     <br\/>    #sort the array<br\/>    arr.sort()<br\/>    <br\/>    # Swap adjacent elements<br\/>    for i in range(0,n-1,2):<br\/>        arr[i], arr[i+1] = arr[i+1], arr[i]<br\/> <br\/># Driver progrM<br\/>arr = [10, 90, 49, 2, 1, 5, 23]<br\/>sortInWave(arr, len(arr))<br\/>for i in range(0,len(arr)):<br\/>    print arr[i],<\/code><\/pre> <\/div>\n<h3 id=\"output-3\"><span style=\"color: #008000;\"><strong>Output:<\/strong><\/span><\/h3>\n<pre>2 1 10 5 49 23 90<\/pre>\n<p>The time complexity of the above solution is O(nLogn) if a O(nLogn) sorting algorithm like <a href=\"https:\/\/www.wikitechy.com\/technology\/merge-sort-linked-lists-2\/\" target=\"_blank\" rel=\"noopener\">Merge Sort<\/a>, <a href=\"https:\/\/www.wikitechy.com\/technology\/time-complexity-building-heap-2\/\" target=\"_blank\" rel=\"noopener\">Heap Sort<\/a>, .. etc is used.<\/p>\n[ad type=&#8221;banner&#8221;]\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sort an array in wave form &#8211; Searching and sorting &#8211; A Simple Solution is to use sorting. First sort the input array, then swap all adjacent elements.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71670,83516],"tags":[72773,72746,72738,72759,72754,72768,72757,72767,72737,72762,72761,72764,72731,72775,72743,72748,72771,72733,72736,72766,72753,72774,72732,72745,72749,72772,72758,72770,72734,72750,72765,72763,72777,72730,72404,72756,72752,72760,72739,72735,72742,72751,72755,72740,72747,72769,72741,72776,72744],"class_list":["post-25268","post","type-post","status-publish","format-standard","hentry","category-searching-and-sorting","category-sort-array","tag-antenna-relay","tag-array-antenna","tag-car-ma","tag-carma","tag-carnegie-wave-energy","tag-cylindrical","tag-focal-plane","tag-focal-plane-array","tag-gigabit-wireless","tag-gravitational-waves","tag-gravitational-waves-detected","tag-gravity-waves-detected","tag-integrated-microwave","tag-interstellar-wiki","tag-ka-band-antenna","tag-karma-credit","tag-millimeter","tag-millimeter-wave","tag-millimeter-wave-antenna","tag-millimeter-wave-antenna-array","tag-plane-wave","tag-ppta","tag-pulsar","tag-pulsar-timing","tag-pulsar-timing-array","tag-pulsar-waves","tag-python-print-array","tag-radio-wiki","tag-sector-antenna","tag-short-wave-infrared","tag-silicon-technologies","tag-slot-band","tag-sonic-shock","tag-sort-an-array-in-wave-form","tag-sort-array-java","tag-vertical-wave","tag-visualization","tag-wave-array","tag-wave-energy","tag-wave-plate","tag-wave-power","tag-wave-power-energy","tag-wave-power-generator","tag-wave-software","tag-waveguide-antenna","tag-what-is-a-pulsar","tag-what-is-wave-energy","tag-what-is-wave-power","tag-wireless-gigabit"],"_links":{"self":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts\/25268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/comments?post=25268"}],"version-history":[{"count":0,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts\/25268\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/media?parent=25268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/categories?post=25268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/tags?post=25268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}