4.插入排序
using System;
namespace InsertSorter
{
/// <summary>
/// 插入排序(Insertion Sort)的算法描述是一種簡單直觀的排序算法。它的工作原理是通過構建有序序列,對於未排序數據,
/// 在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,通常采用in-place排序(即只需用到O(1)的額外空間的排序),
/// 因而在從後向前掃描過程中,需要反復把已排序元素逐步向後挪位, 為最新元素提供插入空間。
/// </summary>
public class InsertSort
{
public static void Sort(int[] numArr)
{
for (int i = 1; i < numArr.Length; i++) //i從1開始
{
int t = numArr[i]; //標志當前未排序數據
int j = i;
while ((j > 0) && (numArr[j - 1] > t))
{
numArr[j] = numArr[j - 1];
j--;
}
numArr[j] = t; //在已排序序列中插入當前值
}
}
}
public class Program
{
static void Main(string[] args)
{
int[] arr = new int[] { 20, 41, 27, 14, 16, 1, 8, 55, 9, 35, 22, 14 };
InsertSort.Sort(arr);
Console.WriteLine("Numbers after insertsort:");
foreach (int i in arr)
{
Console.WriteLine(i);
}
Console.Read();
}
}
}
雖然在實際的項目中,我們的確很少用到這些或其他更高級的算法,但是”算法是程序的靈魂“。雖然算法確實很難,但是”當你用它們巧妙地解決問題的時候,那種純粹的喜悅和快樂是任何不曾體驗過的人所能感受到的“。很不幸,我還沒有體驗幾次這樣的快樂。