希尔排序:
class Program
{
static void Main(string[] args)
{
int[] array = { 4, 6, 34, 75, 43, 7, 356, 2 };
ShellSort(array);
for (int i = 0; i < array.Length; i++)
{
Console.Write(array[i] + " ");
}
Console.ReadKey();
}
public static void ShellSort(int[] arr)//希尔排序
{
int d = arr .Length / 2;
while (d >= 1)
{
for (int i = 0; i < d; i++)
{
for (int j = i + d; j < arr .Length; j += d)
{
int temp = arr [j];//存储和其比较的上一个a[x];
int loc = j;
while (loc - d >= i && temp < arr [loc - d])//&&j-d>=i
{
arr [loc] = arr [loc - d];
loc = loc - d;
}
arr [loc] = temp;
}
}
//一次插入排序结束,缩小d的值
d = d / 2;
}
}
}