public class ShellSort
{
public void shellSort(int[] data, boolean isDesc)
{
for(int i = data.length/2; i > 0; i = i/2)
{
for(int j = 0; j < i; j ++)
{
insertSort(data, j, i, isDesc);
}
}
}
public void insertSort(int[] data, int begin, int gap, boolean isDesc)
{
if(isDesc == false)
{
for(int i = begin + gap; i < data.length; i = i + gap)
{
if(data[i] >= data[i - gap])
{
continue;
}
int key = data[i];
for(int j = i - gap; j >= 0; j = j -gap)
{
if(data[j] > key)
{
data[j + gap] = data[j];
}
else
{
data[j] = key; break;
}
}
}
}
else
{
for(int i = begin + gap; i < data.length; i = i + gap)
{
if(data[i] <= data[i - gap])
{
continue;
}
int key = data[i];
for(int j = i - gap; j >= 0; j = j -gap)
{
if(data[j] < key)
{
data[j + gap] = data[j];
}
else
{
data[j] = key; break;
}
}
}
}
}
private void swap(int[] data, int m, int n)
{
int temp = data[m];
data[m] = data[n];
data[n] = temp;
}
}
Shell Sort
最新推荐文章于 2024-03-07 10:06:36 发布