网站建设需要固定ip地址吗,建设凡科网站,秀屿网站建设,wordpress背景图片插件1.区别
选择排序和冒泡排序的区别主要在于算法逻辑、稳定性和交换成本。
算法逻辑#xff1a;选择排序和冒泡排序都属于比较排序#xff0c;但在具体算法逻辑上有所不同。冒泡排序是通过相邻元素之间的比较和交换#xff0c;将较大#xff08;或较小#xff09;的元素逐…1.区别
选择排序和冒泡排序的区别主要在于算法逻辑、稳定性和交换成本。
算法逻辑选择排序和冒泡排序都属于比较排序但在具体算法逻辑上有所不同。冒泡排序是通过相邻元素之间的比较和交换将较大或较小的元素逐渐“冒泡”到数组的一端。选择排序则是先选择后交换在一轮比较中将最大或最小的元素与数组的末尾元素交换然后在剩余的元素中继续选择和交换。稳定性冒泡排序是稳定的排序算法即相等的元素的顺序不会改变。而选择排序是不稳定的排序算法因为元素的相对顺序可能会在排序过程中发生改变。交换成本在交换成本方面选择排序相较于冒泡排序有优势。冒泡排序需要相邻元素之间的比较和交换而选择排序只需要记录下标一轮比较结束后才进行数据的调换因此选择排序的交换次数要少于冒泡排序。
总的来说选择排序和冒泡排序各有其特点需要根据具体需求和数据量来选择使用哪种排序算法。
public class ArrayTest {public static void main(String[] args) {MyTools mt new MyTools();int[] arr {10, -1, 8, 0, 34};mt.bubble(arr);//输出快捷键soutSystem.out.println(冒泡排序后的arr);for(int i 0; i arr.length; i) {System.out.print(arr[i] \t);}mt.selectionSort(arr);System.out.print(\n);System.out.println(选择排序后的arr);for(int i 0; i arr.length; i) {System.out.print(arr[i] \t);}}
}//创建一个类MyTools完成int数组升序排序的功能
class MyTools {public void bubble(int[] arr) {int temp 0;for(int i 0; i arr.length; i) {for (int j 0; j arr.length - 1 -i; j) {if(arr[j] arr[j1]) {temp arr[j];arr[j] arr[j 1];arr[j 1] temp;}}}}public void selectionSort(int[] arr) {for (int i 0; i arr.length; i) {int minValIdx i;for (int j i 1; j arr.length; j) {if (arr[minValIdx] arr[j]) {minValIdx j;}}int temp arr[minValIdx];arr[minValIdx] arr[i];arr[i] temp;}}
}
运行结果