内部排序 (二)

2014-11-24 10:43:43 · 作者: · 浏览: 1
mergesort(left,mid);
mergesort(mid+1,right);
merge(left,mid,right);
}
}
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 HeapSort
{
int[] a=new int[11];
public void init(int[] b)
{
for(int i=0;i<11;i++)
a[i]=b[i];
}
//数组中除了a[s]均满足堆的定义,本函数调整a[s],使其仍为一个大顶堆
public void heapsort(int s,int m)
{
int j,rc;
rc=a[s];
for(j=2*s;j<=m;j*=2)
{
if(j j++;
if(rc>=a[j])
break;
a[s]=a[j];
s=j;
}
a[s]=rc;
}
public void print()
{
for(int i=10/2;i>=1;i--)
heapsort(i,10);
for(int i=10;i>1;i--)
{
int temp=a[i];
a[i]=a[1];
a[1]=temp;
heapsort(1,i-1);
}
System.out.println("堆排序");
for(int i=1;i<11;i++)
{
System.out.print(a[i]);
System.out.print(' ');
}
System.out.print("\n");
}
}
public class sort {
public static void main(String args[])
{
int[] num=new int[11];
Scanner scanner=new Scanner(System.in);
for(int i=1;i<11;i++)
{
num[i]=scanner.nextInt();
}
scanner.close();
InsertSort q1=new InsertSort();
q1.init(num);
q1.insertsort();
ShellSort q2=new ShellSort();
q2.init(num);
q2.shellsort();
QuitSort q3=new QuitSort();
q3.init(num);
q3.quitsort(1,10);
q3.print();
MergeSort q4=new MergeSort();
q4.init(num);
q4.mergesort(1,10);
q4.print();
HeapSort q5=new HeapSort();
q5.init(num);
q5.print();
}
}

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=pivotkey)
high--;
a[low]=a[high];
while(low low