package com.sort2;
import java.util.Arrays;
public class SortUtil
{
//直接查找排序
public static void insertSort(int []value)
{
int i,j,temp;
//从第二个数开始,插入前面的有序序列
for( i=1;i<=value.length-1;i++)
{
//记录将要插入的记录
temp=value[i];
//从该记录前面的一条记录开始比较,如果比前面的数小,那么不断后移
for(j=i-1;j>=0;j--)
{
//快速排序是稳定的,关键在于这里
if(temp
value[j+1]=value[j];
}
else
break;
}
value[j+1]=temp;
}
}
//希尔排序
public static void shellSort(int[]value,int distance)
{
//依次缩小间距,shell有四次循环,由于直接插入排序对于大致有序的序列效率比较高,所以shell排序的出发点是先让序列大致有序,其本质就是插入排序
//希尔排序时不稳定的
while(distance>=1)
{
for(int i=0;i
for(int j=i+distance;j
int temp=value[j];
int k;
for(k=j-distance;k>=i;k-=distance)
{
if(temp
else
break;
}
value[k+distance]=temp;
}
}
if(distance==1)
{
return;
}
distance=distance/3+1;
}
}
//冒泡排序
public static void bubbleSort(int []value)
{
//
for(int i=1;i
for(int j=0;j
if(value[j]>value[j+1])
{
int temp=value[j];
value[j]=value[j+1];
value[j+1]=temp;
}
}
}
}
//快速排序
public static void quickSort(int []value)
{
quickSort(value,0,value.length-1);
}
public static void quickSort(int []value,int begin,int end)
{
if(begin
int low=begin;
int height=end;
int temp=value[low];
while(low
while(low
{
height--;
}
if(low
value[low++]=value[height];
}
while(low
low++;
}
if(low
value[height--]=value[low];
}
}
value[low]=temp;
quickSort(value,begin,low-1);
quickSort(value,low+1,end);
}
}
//选择排序
public static void selectSort(int[]value)
{
for(int i=0;i
int min=i;
for(int j=i+1;j