首页 > 代码库 > Java BubbleSort

Java BubbleSort

package sort.bubble;import java.util.Arrays;public class BubbleSort {	public static void main(String[] args) {		int[] arr = {6,8,4,7,9,12};				bubbleSort(arr);		//bubbleSort2(arr);		//bubbleSort1(arr);	}		/*交换次数最少的冒泡排序	 * 冒泡排序,根据最后交换数位置	 */	public static void bubbleSort(int[] arr)	{		int start = 0;				//未排序数组开始位置		int end =arr.length; 		    //未排序数组结束位置		int current;				//未排序数组当前位置		int last;				//未排序数组最后一次发生交换的位置				while(start <end)		{			current = last = start;			while(++current <end)			{				if(arr[current] < arr[current-1])				{					last = current;					//当前位置发生交换,记录改变位置					int temp = arr[current];					arr[current]= arr[current -1];					arr[current-1] = temp;				}				System.out.println(Arrays.toString(arr));			}						end = last;						System.out.println("--"+Arrays.toString(arr) +"  " +last);		}		System.out.println("@@ "+Arrays.toString(arr));	}		public static void bubbleSort1(int[] arr)	{		int len = arr.length -1;				for(int i =0;i<len;i++)		{			for(int j= i+1;j<len+1;j++)			{				if(arr[i] < arr[j])				{					int temp = arr[i];					arr[i] = arr[j];					arr[j] = temp;				}				System.out.println(Arrays.toString(arr));			}			System.out.println("-----"+Arrays.toString(arr));		}			}		//第二版本,减少每一趟的次数	public static void bubbleSort2(int[] arr){			boolean sorted= true;			int len =arr.length;			for(int j=0;j<len-1;j++){ //趟数				sorted =true; //假定有序				for(int i=0;i<len-1-j;i++){ //次数					if(arr[i]>arr[i+1]){						int temp = arr[i];						arr[i] =arr[i+1];						arr[i+1] =temp;						sorted =false; //假定失败					}					System.out.println(Arrays.toString(arr));				}				if(sorted){ //减少趟数					break;				}				System.out.println("-----"+Arrays.toString(arr));			}					}		}

  

Java BubbleSort