希尔排序
package java数据结构练习;
import java.util.Arrays;
public class ShellSort {
public static void main(String[] args) {
int val,index,n=40;
int a[]=new int[n];
for(int i=0;i<n;i++)
a[i]=(int) (Math.random()*n);
long t1=System.currentTimeMillis();
for(int gap=a.length/2;gap>0;gap=gap/2)
{
for(int i=gap;i<a.length;i++)
{
val=a[i];
index=i;
while((index-gap)>=0 && a[index-gap]>val)
{
a[index]=a[index-gap];
index=index-gap;
}
a[index]=val;
}
}
long t2=System.currentTimeMillis();
System.out.println("运行时间为:"+(t2-t1)+"ms");
System.out.println(Arrays.toString(a));
}
}
快速排序
package java数据结构练习;
import java.util.Arrays;
public class QuickSort {
static void quicksort(int a[],int left,int right)
{
int temp;
int l=left;
int r=right;
int p=a[(l+r)/2];
while(l<r)
{
while(a[l]<p)
l++;
while(a[r]>p)
r--;
if(l>=r)
break;
temp=a[l];
a[l]=a[r];
a[r]=temp;
if(a[l]==p)
r--;
if(a[r]==p)
l++;
}
if(l==r)
{
l++;
r--;
}
if(left<r)
quicksort(a, left, r);
if(l<right)
quicksort(a, l, right);
}
public static void main(String[] args) {
int n=80000,val,index;
int a[]= new int[n];
for(int i=0;i<n;i++)
a[i]=(int) (Math.random()*n);
long t1=System.currentTimeMillis();
quicksort(a, 0, a.length-1);
long t2=System.currentTimeMillis();
System.out.println("运行时间为:"+(t2-t1)+"ms");
}
}
归并排序
package java数据结构练习;
import java.util.Arrays;
public class 归并排序 {
static void mergeSort(int a[],int left,int right,int temp[])
{
if(left<right) {
int mid=(left+right)/2;
mergeSort(a, left, mid, temp);
mergeSort(a, mid+1, right, temp);
merge(a, left, mid,right, temp);
}
}
private static void merge(int[] a, int left, int mid, int right, int temp[])
{
int l=left;
int r=mid+1;
int t=0;
while(l<=mid && r<=right)
{
if(a[l]<=a[r])
{
temp[t]=a[l];
t++;
l++;
}
else
{
temp[t]=a[r];
r++;
t++;
}
}
while(l<=mid)
{
temp[t]=a[l];
t++;
l++;
}
while(r<=right)
{
temp[t]=a[r];
t++;
r++;
}
t=0;
int tl=left;
while(tl<=right)
{
a[tl]=temp[t];
tl++;
t++;
}
}
public static void main(String[] args) {
int n=80000,val,index;
int a[]=new int[n];
int temp[]=new int [n];
for(int i=0;i<n;i++)
a[i]=(int) (Math.random()*n);
long t1=System.currentTimeMillis();
mergeSort(a, 0, a.length-1, temp);
long t2=System.currentTimeMillis();
System.out.println("运行时间为:"+(t2-t1)+"ms");
}
}
插入排序
package java数据结构练习;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Random;
public class InsertSort {
public static void main(String[] args) {
int n=80000,val,index;
int a[]= new int[n];
for(int i=0;i<n;i++)
a[i]=(int) (Math.random()*n);
long t1=System.currentTimeMillis();
for(int i=1;i<a.length;i++)
{
val=a[i];
index=i-1;
while(index>=0 && val<a[index])
{
a[index+1]=a[index];
index--;
}
a[index+1]=val;
}
long t2=System.currentTimeMillis();
System.out.println("运行时间为:"+(t2-t1)+"ms");
}
}