——-
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 版权协议,转载请附上原文出处链接和本声明。