Shell排序
Shell排序(又称希尔排序)也是一种插入排序,但它是插入排序的一个更高效的版本,也称为缩小增量排序。
基本思想
希尔排序是把记录按下标的一定量分组,对每组使用直接插入排序的算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件七号被分成一组,算法结束。
举例说明原始数据,以下数据元素颜色相同为一组
初始量gap=length/2=5,意味着整个数组被分为5组
以此类推,不断缩小增量
package Sort;
public class ShellSortE {
public static void main(String[] args) {
int arr[]={2,8,6,-1,-2,10,7};
int i= arr.length;
int temp=0;
do
{
i=i/2;
for (int j=i;j< arr.length;j++)
{
for (int m=j-i;m>=0;m-=i)
{
if (arr[m]>arr[m+i])
{
temp=arr[m];
arr[m]=arr[m+i];
arr[m+i]=temp;
}
}
}
}while (i!=1);
for (int n=0;n< arr.length;n++)
{
System.out.println(arr[n]);
}
}
}