using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Sort
{
class ShellSorter
{
public static int[] Sort(int[] a)
{
ShellSort(a);
return a;
}
public static void ShellSort(int[] myArray)
{
int i, j, increment;
int temp;
for (increment = myArray.Length / 2; increment > 0; increment /= 2)
{
for (i = increment; i < myArray.Length; i++)
{
temp = myArray[i];
for (j = i; j >= increment; j -= increment)
{
if (temp < myArray[j - increment])
myArray[j] = myArray[j - increment];
else
break;
}
myArray[j] = temp;
}
}
}
}
}例子一:
例子二:
流程图
对于插入排序算法来说,如果原来的数据就是有序的,那么数据就不需要移动,而插入排序算法的效率主要消耗在数据的移动中。因此可知:如果数据的本身就是有序的或者本身基本有序,那么效率就会得到提高。
作者:jiankunking 出处:http://blog.csdn.net/jiankunking
原文:http://blog.csdn.net/jiankunking/article/details/17992529