How to sort array into zig zag pattern (a < b > c < d > e < f > g) in C#

2 Answers

0 votes
using System;

public class Program
{
	private static void SortArrayIntoZigZagPattern(int[] arr) {
		bool small = true;
		int size = arr.Length;

		for (int i = 0; i <= size - 2; i++) {
			if (small) {
				if (arr[i] > arr[i + 1]) {
					int temp = arr[i];
					arr[i] = arr[i + 1];
					arr[i + 1] = temp;
				}
			}
			else {
				if (arr[i] < arr[i + 1]) {
					int temp = arr[i];
					arr[i] = arr[i + 1];
					arr[i + 1] = temp;
				}
			}
			small = !small;
		}
	}
	public static void Main(string[] args)
	{
		// a < b > c < d > e < f > g...
		// 3 < 5 > 1 < 9 > 6 < 7 > 2 < 4

		int[] arr = new int[] {3, 5, 1, 7, 9, 6, 4, 2};

		SortArrayIntoZigZagPattern(arr);

		Console.WriteLine(String.Join(" ", arr));
	}
}




/*
run:
 
3 5 1 9 6 7 2 4
 
*/



 



answered Nov 5, 2022 by avibootz
0 votes
using System;

public class Program
{
	static void Swap<T> (ref T a, ref T b) {
        T temp = a;
        a = b;
        b = temp;
    }
	private static void SortArrayIntoZigZagPattern(int[] arr) {
		bool small = true;
		int size = arr.Length;

		for (int i = 0; i <= size - 2; i++) {
			if (small) {
				if (arr[i] > arr[i + 1]) {
					Swap(ref arr[i], ref arr[i + 1]);
				}
			}
			else {
				if (arr[i] < arr[i + 1]) {
					Swap(ref arr[i], ref arr[i + 1]);
				}
			}
			small = !small;
		}
	}
	public static void Main(string[] args)
	{
		// a < b > c < d > e < f > g...
		// 3 < 5 > 1 < 9 > 6 < 7 > 2 < 4

		int[] arr = new int[] {3, 5, 1, 7, 9, 6, 4, 2};

		SortArrayIntoZigZagPattern(arr);

		Console.WriteLine(String.Join(" ", arr));
	}
}




/*
run:
 
3 5 1 9 6 7 2 4
 
*/

 



answered Nov 5, 2022 by avibootz
...