快速排序和冒泡排序【最简单易懂的Demo】

public class SortDemo {
	public static void main(String[] args){
		
		int arr[] = {3,5,7,2,8,1,9,6,4};
		System.out.print("排序前:");printfArray(arr);
		selectSort(arr);
		System.out.print("快速排序后:");printfArray(arr);
		//原始数组:57,68,59,52,
    		//一轮之后:52,68,59,57,
    		//二轮之后:52,57,68,59,
    		//末轮之后:52,57,59,68,	
		
		int arr2[] = {3,5,7,2,8,1,9,6,4};
		System.out.print("排序前:");printfArray(arr2);
		bubbleSort(arr2);
		System.out.print("冒泡排序后");printfArray(arr2);
	}
	//快速排序(升序)从左往右取出一个数,这个数依次和其他数比较,大于则交换,即得到最小的数,10轮结束也就得到升序结果
	public static void selectSort(int[] arr){
		//具体写法百度可查,都有些许差异
		for(int x=0;x<arr.length-1;x++){
			for(int y=x+1;y<arr.length;y++){
				if(arr[x]>arr[y]){
					int temp = arr[x];
					arr[x] = arr[y];
					arr[y] = temp;
				}
			}
		}
	}
	//冒泡排序(升序)比较第1丶2个数,1大于2则交换,继续比较2丶3个数,直至首轮结束,得到最大数,进行10轮得到升序结果
	public static void bubbleSort(int[] arr){
		for(int x=0;x<arr.length-1;x++){
			for(int y=0;y<arr.length-1-x;y++){
				if(arr[y]>arr[y+1]){
					int temp = arr[y+1];
					arr[y+1] = arr[y];
					arr[y] = temp;
				}
			}
		}
	}
	//输出方法
	public static void printfArray(int[] arr){
		System.out.print("[");
		for(int i=0;i<arr.length;i++){
			if(i!=arr.length-1){
				System.out.print(arr[i]+",");
			}else{
				System.out.println(arr[i]+"]");
			}
		}
		
	}
}
ps:快速排序和冒泡排序差不多,只是冒泡排序在发现比它小的时候就交换,而选择排序是只有在确定了最小的数据之后,才会发生交换。
控制台:排序前:[3,5,7,2,8,1,9,6,4]
选择排序后:[1,2,3,4,5,6,7,8,9]
排序前:[3,5,7,2,8,1,9,6,4]
冒泡排序后[1,2,3,4,5,6,7,8,9]
以下为冒泡排序示意图:
 
  
 
  
 
  
 
  
 
  
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自blog.csdn.net/vayne_xiao/article/details/54563283
今日推荐