编程知识 cdmana.com

C#,数组数据波形排序(Sort in Wave Form)的朴素算法与源代码

 

所谓“波形排序”就是一大一小。

 

将n个身高互不相同的人排成一行 ,对于每个人 ,要求他要么比相邻的人均高 ,要么比相邻的人均矮 ,问共有多少种排法 ,这一问题称为波形排列问题。

using System;
using System.Collections;
using System.Collections.Generic;

namespace Legalsoft.Truffer.Algorithm
{
	/// <summary>
	/// C#实现了对波形中的数组进行排序的朴素方法
	/// </summary>
	public static class Array_Sort_In_Wave_Form
	{
		// A utility method to swap two numbers.
		private static void Swap(int[] arr, int a, int b)
		{
			int temp = arr[a];
			arr[a] = arr[b];
			arr[b] = temp;
		}

		public static void Sort_In_Wave(int[] arr)
		{
			Array.Sort(arr);
			int n = arr.Length;
			for (int i = 0; i < n - 1; i += 2)
			{
				Swap(arr, i, i + 1);
			}
		}

		public static void Sort_In_Wave_2th(int[] arr)
		{
			int n = arr.Length;
			for (int i = 0; i < n; i += 2)
			{
				if (i > 0 && arr[i - 1] > arr[i])
				{
					Swap(arr, i - 1, i);
				}
				if (i < n - 1 && arr[i] < arr[i + 1])
				{
					Swap(arr, i, i + 1);
				}
			}
		}
	}
}

 

版权声明
本文为[深度混淆]所创,转载请带上原文链接,感谢
https://blog.csdn.net/beijinghorn/article/details/124744580

Scroll to Top