冒泡与选择其最终的区别是效率(减少计算机的资源消耗)
public class Study{
public static void main(String[] args){
int[] arr={33,44,55,77,66,99,88};
int replace=0;
int bj=0;
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1;j++){
if(arr[j]>arr[j+1]){
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
replace++;
}
bj++;
}
}
System.out.println("冒泡排序for里if内替换的次数:"+replace);
System.out.println("冒泡排序for循环比较的次数:"+bj);
//以上为冒泡排序
//以下为选择排序
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int t=arr[j];
arr[i]=arr[j];
arr[j]=t;
replace++;
}
bj++;
}
}
System.out.println("选择排序for里if内替换的次数:"+replace);
System.out.println("选择排序for循环比较的次数:"+bj);
//选择排序比冒泡排序更有效率,交换和比较次数减少。
}
}
代码方面的区别:
冒泡排序是 内for循环各自自身变量和变量+1之间的替换和比较;
选择排序是 设定内for循环的初始变量为外for 循环初始值+1;(比如内j外i,而j=i+1);
理解方面的区别:
ps:我不太明白为什么名字叫选择排序,可能也只是个名字而已。
当然名称只是个代表,个人认为效率较冒泡更高的缘由是 内外for变量实行了交互,大大缩减了运行时间,提高了效率。
(eg.一个不太恰当的例子。甲乙在同一条路上相对而行,产生交互。其总路程等于二者的速度之和乘以时间。“选择”;
甲乙不在同一条路上相对而行,其总路程等于甲速度乘时间+乙速度乘时间“冒泡”)