java选择和冒泡,##Java中选择排序和冒泡排序简析

简单来说无论选择排序还是冒泡排序,都是让数组有序化的一种方法,比如一个数组中的一串数字,我们现在希望这组数字能够从小到大,或是从大到小的排列,以便我们对数据的管理,这是就需要了排序。但是实现的思想却略有差异而已,下面我门以同一个数组为例,简析一下两者实现过程上的差异。

数组 int[] arr = {5, 2, 3, 6, 1};

选择排序

思想:每一次排序过程,我们获取当前没有排好序中的元素,从第一个元素开始,依次与其之后的元素比较,两者更小的数排到第一位,然后将第一位的这个数继续与下一位的数比较,直到第一位得到数组中的最小的数。然后从第二位继续上述的操作,以此类推循环这个过程即可实现对整个数组排序。

//我们可以假设有一个标签,最开始的时候指向第一位的数

//i < arr.length - 1是因为从第一位的数,到最后一位的数只需比较arr.length - 1次

//这层循环决定标签在第一位时,比较arr.length - 1次,在这一位比较完成后,标签后移一位,然后以此类推。

for (int i = 0; i < arr.length - 1; i++){

//这层循环决定标签在这一位时,这一位的数和后面的数继续比较

for (int j = i + 1; j < arr.length; j++) {

if (arr[i] > arr[j]){

int temp = arr[j];

arr[j] = arr[i];

arr[i] = temp; //第i位的元素和j位的元素互换

}

}

}

for(int i: arr){

System.out.println(i);

}

从结果来看,第一次比较后的结果依次是 {2, 5, 3, 6, 1} {2, 5, 3, 6, 1} {2, 5, 3, 6, 1} {1, 5, 3, 6, 2},其目的就是将数组中最小的数(1)放倒第一位,然后再进行第二次比较,将

倒数第二小的数(2)放到第二位,以此类推。

冒泡排序

思想:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端,以达到数组从小到大(从大到下)排序的目的。

int[] arr2 = {5, 2, 3, 6, 1};

for (int i = 0; i < arr2.length - 1; i++) {

for (int j = 0; j < arr2.length -1 - i; j++) {

if (arr2[j] > arr2[j+1]){

int temp = arr2[j+1];

arr2[j+1] = arr2[j];

arr2[j] = temp;

}

}

}

for(int i: arr2){

System.out.println(i);

}

分步来看,在第一次的比较过程中,依次得到的结果是 {2,3,5,1,6} {2,3,1,5,6} {2,1,3,5,6} {1,2,3,5,6},不难看出,第一次比较的结果就是将数组中最大的数(6)排到了最后一位,然后第二次比较后的结果就是将剩余的数里最大的那个(5)排到了倒数第二位,然后一次类推。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值