`
lxcaoxin
  • 浏览: 127586 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

java-冒泡排序、选择排序、快速排序、插入排序

    博客分类:
  • Java
阅读更多



////快速排序法
class QuerySort
{
   public void sort(int left,int right,int []array)	
   {
	   int l=left;
	   int r=right;
	   int pivot=array[(left+right)/2];
	   int temp=0;
	   while(l<r)
	   {
		   while(array[l]<pivot) l++;
		   while(array[r]>pivot) r--;
		   
		   if(l>=r) break;
		   
		   temp=array[l];
		   array[l]=array[r];
		   array[r]=temp;
		   
		   if(array[l]==pivot) --r;
		   if(array[r]==pivot)  ++l;
	   }
	   if(l==r)
	   {
		   l++;
		   r--;
	   }
	   if(left<r) sort(left,r,array);
	   if(right>l) sort(l, right, array);
	   
   }

}

////插入排序

class  InsertSort
{
	public void sort(int arr[])
	{
		for(int i=1;i<arr.length;i++)
		{
			int insertVal=arr[i];
			///insertVal准备和前一个数比较
			int index=i-1;
			while(index>=0&&insertVal<arr[index])
			{
				///将arr[index]向后移动
				arr[index+1]=arr[index];
				///让index向前移
				index--;
			}
			
			///将insertVal插入适当位置
			arr[index+1]=insertVal;
		}
	}
	
	}


////  选择排序
class Select
{
public void sort(int arr[])	
{   

		int temp;
		for(int j=0;j<arr.length-1;j++)
		{
		////默认第一个j数最小
			int min=arr[j];
			///记录最小数的下标minIndex
			int minIndex=j;
			for(int k=j+1;k<arr.length;k++)
			{
				if(min>arr[k])
				{
					min=arr[k];
					   minIndex=k;     
				}
				
			}
			///退出内部for时找到这次的最小值
			///用中间变量记录arr[j]
			temp=arr[j];
			///将arr[j]和最小值arr[minIndex]替换
			arr[j]=arr[minIndex];
			///将arr[minIndex]赋值为中间变量temp
			arr[minIndex]=temp;
			
		}
	
	}
}

////冒泡排序
class Bubble
{
	public void sort(int arr[])
	{	int temp;
		////外层排序,决定要走几趟
		for(int i=0;i<arr.length-1;i++)
		{
			 ////内层排序,逐个比较,前一个数比后一个数打,则交换位置
			for(int j=0;j<arr.length-1-i;j++)      /////arr.length-1-i
			{
				if(arr[j]>arr[j+1])
				{
					temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
			
		}
		
	}
	
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics