直接插入排序属于简单排序,是一种稳定排序算法,希尔排序是直接插入排序的改进,降低了时间复杂度,现在为了方便交流和自己今后的学习,将自己学习插入排序和希尔排序的代码在博客中分享,一块交流。
//直接插入排序
public static void DirectInsertSort(int[] arrays)
{
for (int i=1;i<arrays.length;i++)
{
int j;
if (arrays[i]<arrays[i-1])
{
//若后一个数要插入的数比前面已经排好序的数要小,就在前面已排好序的数组中找到合适的位置插入
int temp=arrays[i];
for ( j=i-1;j>=0&&arrays[j]>temp;j--)
{
//开始后移
arrays[j+1]=arrays[j];
}
arrays[j+1]=temp;//插入到正确位置
}
}
Print(arrays);
}
//希尔排序
public static void ShellSort(int[] arrays)
{
int increment=arrays.length;
int j;
do
{
increment=increment/3+1;
for (int i=increment;i<arrays.length;i+=increment)
{//通过一个增量实现跳跃式移动,增加排序效率
if (arrays[i]<arrays[i-increment])
{
int temp=arrays[i];
for ( j=i-increment;j>=0&&arrays[j]>temp;j-=increment)
arrays[j+increment]=arrays[j];
arrays[j+increment]=temp;
}
}
}while (increment>1);
Print(arrays);
}
其中print(int[] arrays)是一个输出数组中的每一个元素的函数