两种排序算法,java

public class Main{
	
	public static void main(String[] args){
		
		int[] array = {2,3,5,1,1,36,5};
		array = QuickSort(array,0, array.length-1);
		for(int i=0; i<array.length; i++)
		{
			System.out.println(array[i]);
		}
		
		
	}
	
	static int[] BubbleSort(int[] array, int n){
		for(int i=0; i<n-1; i++)
		{
			for(int j=0; j<n-1-i; j++)
			{
				if(array[j]>array[j+1])
				{
					int temp = array[j];
					array[j] = array[j+1];
					array[j+1] = temp;
				}
			}
		}
		return array;
	}
	
	//这种算法,刚开始会埋没“标杆元素”(被程序刚刚运行时找到的后面的一个小元素埋没(替换)),接下来
	//从后面放到前面的那个元素,又会被前面找到的大元素替换,,就这样一直替换,一直都只会有 “标杆元素”
	//被替换掉,在最后一步,再把它找回来就行
	static int[] QuickSort(int[] array, int left, int right)
	{
		if(left < right)
		{
			int i=left;
			int j=right;
			//每次的标杆元素都选取 left 这个位置的
			int x=array[i];
			while(i<j)
			{
				//从后面找到第一个小元素,放在前面
				while(i<j && array[j]>x)
				{
					j--;
				}
				if(i<j)
				{
					array[i]=array[j];
					i++;
				}
				
				//从前面找到第一个大元素,放在后面
				while(i<j && array[i]<x)
				{
					i++;
				}
				if(i<j)
				{
					array[j]=array[i];
					j--;
				}
			}
			
			array[i]=x;
			QuickSort(array, left,i-1);
			QuickSort(array, i+1,right);
		}
		
		return array;
	}
	
	
}

猜你喜欢

转载自blog.csdn.net/a1066196847/article/details/77451647