下面用简易的代码实现各种排序的算法
输入10个整形数并进行排序
[java]
import java.util.Scanner;
//插入排序
class InsertSort
{
int[] a=new int[11];
public void init(int[] b)
{
for(int i=0;i<11;i++)
a[i]=b[i];
}
public void insertsort()
{
System.out.println("插入排序");
for(int i=2;i<11;i++)
{
if(a[i] {
a[0]=a[i];//a[0]作为哨兵
a[i]=a[i-1];
int j;
for(j=i-2;;j--)
{
if(a[0] {
a[j+1]=a[j];
}
else
break;
}
a[j+1]=a[0];
}
}
for(int i=1;i<11;i++)
{
System.out.print(a[i]);
System.out.print(' ');
}
System.out.print("\n");
}
}
class ShellSort
{
int[] a=new int[11];
int[] dlta=new int[]{5,3,1};
public void init(int[] b)
{
for(int i=0;i<11;i++)
a[i]=b[i];
}
public void shellinsort(int dk)
{
for(int i=dk+1;i<11;i++)
{
if(a[i] {
a[0]=a[i];
int j;
for(j=i-dk;j>0;j-=dk)
{
if(a[0] a[j+dk]=a[j];
else
break;
}
a[j+dk]=a[0];
}
}
}
public void shellsort()
{
System.out.println("希尔排序");
for(int i=0;i<3;i++)
shellinsort(dlta[i]);
for(int i=1;i<11;i++)
{
System.out.print(a[i]);
System.out.print(' ');
}
System.out.print("\n");
}
class QuitSort
{
int[] a=new int[11];
public void init(int[] b)
{
for(int i=0;i<11;i++)
a[i]=b[i];
}
public int partition(int low,int high)
{
a[0]=a[low];
int pivotkey=a[low];
while(low
while(low
high--;
a[low]=a[high];
while(low
a[high]=a[low];
}
a[low]=a[0];
return low;
}
public void quitsort(int low,int high)
{
if(low
int pivotloc=partition(low,high);
quitsort(low,pivotloc-1);
quitsort(pivotloc+1,high);
}
}
public void print()
{
System.out.println("快速排序");
for(int i=1;i<11;i++)
{
System.out.print(a[i]);
System.out.print(' ');
}
System.out.print("\n");
}
}
class MergeSort
{
int[] a=new int[11];
public void init(int[] b)
{
for(int i=0;i<11;i++)
a[i]=b[i];
}
public void merge(int l,int m,int r)
{
int i,j,k;
int[] d=new int [11];
i=l;
j=m+1;
k=1;
while(i<=m&&j<=r)
{
if(a[i]<=a[j])
d[k++]=a[i++];
else
d[k++]=a[j++];
}
while(i<=m)
d[k++]=a[i++];
while(j<=r)
d[k++]=a[j++];
for(i=l,k=1;i<=r;i++,k++)
a[i]=d[k];
}
public void mergesort(int left,int right)
{
int mid;
if(left
mid=(left+right)/2;