黑马程序员_冒泡排序与选择排序代码体现

  • Post author:
  • Post category:其他





——-


Android培训



java培训

、期待与您交流!

———





在论坛上看到有朋友对冒泡和选择排序不懂,所以就写了这篇博文说说这两种排序的区别


冒泡排序是从第一个开始跟后面比较,如果后面一个比前面一个小就交换,接着第二个继续和第三个比较,如果第三个比第二个小,继续交换,以此类推。每一次排序的结果都会把最大的往后面排,直到排序结束。


选择排序是将第一个与后面的每一个值比较,比如第一次与第二个比较,如果大就交换两个数值的位置,然后继续用第一个与三个继续比较,第三个比第一个大就交换位置,反之,就不交换;继续用第一个与后面的比较,以此类推,




下次循环的时候就用第二个与后面的比较,反复前面的比较步骤,直到所有排序结束




不同:冒泡排序每一次的结果是把大的往后面移,选择排序是把小的往前移。



最后我附上代码,你比较一下吧(置换位置的代码还能提取出来重构成单独的方法,减少代码量)


public class Sort {

	public static void main(String[] args) {
		bubbleSort();
		System.out.println("--------------------");
		selectSort();
		
	}
	//冒泡排序
	public static void bubbleSort(){
		int[] arr = {49,56,12,87,30,25,14};  //定义一个未排序的数组
		System.out.print("进行未排序前的遍历:");
		printArray(arr); //遍历数组
		System.out.println();
		for(int i = 0; i < arr.length; i++){
			for(int j = 0; j < arr.length - 1 - i; j++){//每排序完一次,最大的就在最后面,所以不需要再比较,每次就少比较i次
				if(arr[j] > arr[j+1]){  //如果前面一个元素比后面一个元素大,就交换位置
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
			System.out.print("第"+(i+1)+"次的结果为:");
			printArray(arr); //遍历每一次排序的结果
			System.out.println();
		}
		
	}
	//选择排序
	public static void selectSort(){
		int[] arr = {49,56,12,87,30,25,14};
		System.out.print("进行未排序前的遍历:");
		printArray(arr); //遍历数组
		System.out.println();
		for(int i = 0; i < arr.length; i++){
			for(int j = i+1; j < arr.length; j++){
				if(arr[i] > arr[j]){  
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
			System.out.print("第"+(i+1)+"次的结果为:");
			printArray(arr); //遍历每一次排序的结果
			System.out.println();
		}
	}
	//打印数组
	public static void printArray(int[] arr){
		System.out.print("["+arr[0]+",");
		for(int i = 1; i < arr.length; i++){
			if( i != arr.length - 1){
				System.out.print(arr[i]+",");
			}else{
				System.out.print(arr[i]+"]");
			}
		}
	}

}



版权声明:本文为u012749709原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。