各种排序练习

import java.util.Timer;

public class Sort 
{
	public static final int ARRAY_SIZE=100000;
	public int[] arry=new int[ARRAY_SIZE];
	public static void initize_array(int[]arry)
	{
		for(int i=0;i<arry.length;i++)
		{
			arry[i]=(int) (Math.random()*1000000%100000);
		}
	}
	public static void selectionSort(int[] arry)
	{
		int smallest;
		for(int i=0;i<arry.length;i++)
		{
			smallest=i;
			for(int j=i+1;j<arry.length;j++)
			{
				if(arry[smallest]>arry[j])
				{
					smallest=j;
				}
			}
			int temp=arry[smallest];
			arry[smallest]=arry[i];
			arry[i]=temp;
		}
	}
	public static void deselectionSort(int[]arry)
	{
		int smallest,biggest;
		int i=0,j=arry.length-1;
		while(i<j)
		{
			smallest=i;
		    biggest=j;
			for(int k=i;k<=j;k++)
			{
				if(arry[smallest]>arry[k])
				{
					smallest=k;
				}
				if(arry[biggest]<arry[k])
				{
					biggest=k;
				}
			}
			int temp=arry[smallest];
			arry[smallest]=arry[i];
			arry[i]=temp;
			temp=arry[biggest];
			arry[biggest]=arry[j];
			arry[j]=temp;
			i++;
			j--;
		}
	}
	public  static void bubbleSort(int[]arry)
	{
		for(int i=0;i<arry.length;i++)
		{
			for(int j=0;j<arry.length-i-1;j++)
			{
				if(arry[j]>arry[j+1])
				{
					int temp=arry[j];
					arry[j]=arry[j+1];
					arry[j+1]=temp;
				}
			}
		}
	}
	public static int binary_search(int[]arry,int target)
	{
		int first=0;
		int last=arry.length;
		int mid=0;
		while(first<last)
		{
			mid=(first+last)/2;
			if(arry[mid]==target)
			{
				return mid;
			}
			else if(arry[mid]>target)
			{
				last=mid;
			}
			else if(arry[mid]<target)
			{
				first=mid+1;
			}
		}
		return -1;
	}
	public static void insertSort(int[]arry)
	{
		
		for(int i=1;i<arry.length;i++)
		{
			int j=i;
			int target=arry[i];
			while(j>0&&target<arry[j-1])
			{
				arry[j]=arry[j-1];
				j--;
			}
			arry[j]=target;
		}
	}
	public static void mSort(int[]arr,int[]temp,int first,int last)
	{
		if(first+1<last)
		{
			int middle=(first+last)/2;
			mSort(arr,temp,first,middle);
			mSort(arr,temp,middle,last);
			if(arr[middle-1]<arr[middle])
			{
				return;
			}
			int indexA=first;
			int indexB=middle;
			int indexC=first;
			while(indexA<middle&&indexB<last)
			{
				if(arr[indexA]<arr[indexB])
				{
					temp[indexC]=arr[indexA];
					indexA++;
				}
				else
				{
					temp[indexC]=arr[indexB];
					indexB++;
				}
				indexC++;
			}
			while(indexA<middle)
			{
				temp[indexC]=arr[indexA];
				indexA++;
				indexC++;
			}
			while(indexB<last)
			{
				temp[indexC]=arr[indexB];
				indexB++;
				indexC++;
			}
			for(int i=first;i<last;i++)
			{
				arr[i]=temp[i];
			}
		}
	}
	public static void arry_print(int[]arry)
	{
		for(int i=0;i<arry.length;i++)
		{
			System.out.print(arry[i]);
		}
		System.out.print("\n");
	}
	public static void main(String[]args)
	{
		Sort sort=new Sort();
		Sort.initize_array(sort.arry);
		int[]temp=sort.arry.clone();
		long startTime=System.currentTimeMillis();
		//Sort.deselectionSort(sort.arry);
		//Sort.selectionSort(sort.arry);
		//Sort.bubbleSort(sort.arry);
		//Sort.mSort(sort.arry, temp, 0, sort.arry.length);
		Sort.insertSort(sort.arry);
		long endTime=System.currentTimeMillis();
		System.out.print((endTime-startTime)/1000);	
	}
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值