java-冒泡排序和选择排序的分析

本文详细介绍了两种经典的排序算法——冒泡排序和选择排序。通过具体的实例演示了这两种算法的工作原理,并给出了相应的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两种排序方式

现在介绍两种著名的排序方式:

1,       冒泡排序:相邻元素进行比较,较大的往右边移动:结果就是每一次排序,最大的都会移动到右边。最后结果就是升序的序列。

如:3,4,2,6,7

第一轮:1,3<4  不变  3,4,2,6,7

               2,4>2  交换位置 3,2,4,6,7

               3,4<6  不变    3,2,4,6,7

               4,6<7  不变 3,2,4,6,7

第二轮:1,3>2  交换位置  2,3,4,6,7

        2,3<4   不变

               3.  4<6   不变

.。。。

转换成一般性规律,每一轮比较最大值就会移动到最右边来,一共会比较个数-1次。

用代码实现的话:

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

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

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

            int temp;

            temp =a[j];

            a[j]=a[j+1];

            a[j+1]=temp;}}}

   外层的i循环表示的循环次数,内循环表示每一轮循环的状况,变化在于j<a.length-1-i,因为每一轮循环后,都会排出一个最大值,那个不用再进行比较,所以减去循环的次数。

2,选择排序:有一个数组a[i]的话,选择排序就是a[0]和后面的元素依次比较,接着a[1]和后面的元素一次比较

例:a[]={7,3,2,8,6,4}

第一轮:1,7>3,交换,3,7,2,8,6,4

       2, 3>2,交换,2,7,3,8,6,4

       3,3<8,3<6,3<4后面三步都是小于,所以不变。

   第一轮结果:2,7,3,8,6,4

第二轮:1,7>3,交换,2,3,7,8,6,4

       2,3<7,3<8,3<6,3<4.后面四部都是小于,所以不变

    第二轮结果:2,3,7,8,6,4

第三轮:1,7<8 不变

       2,7>6,交换,2,3,6,8,7,4

       3,6>4,交换,2,3,4,8,7,6

第四轮1,8>7,交换,2,3,4,7,8,6

     2,7>6,交换,2,3,4,6,8,7

第五轮1,8>7,交换,2,3,4,6,7,8

上述过程,说明选择排序,每一轮都是把最小值选出放在左边,经过元素个数-1论比较。

源码:

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

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

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

            int temp;

            temp =a[i];

            a[i]=a[j];

            a[j]=temp;}}}

外层循环i,是表示循环的次数,内存是比较的逻辑,需要注意的是:初始值j=i+1,是因为,在一轮比较中a[i]是固定不变的,只需要下标i比较后面的值,而限定条件j<a.length的原因,每一回都取到的最右边的值,也就是a[a.length-1]。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值