java实现选择排序和冒泡排序及执行流程图解

1、 选择排序:把第一个数与他后面的数进行比较,如果顺序则继续与后面比较,如果逆序则两数交换位置,继续将第一个数与交换位置后的数进行比较,这样就完成了第一轮排序。同理将第二位与其后的数比较,直到数组有序为止。

最好时间复杂度:O(n)     平均时间复杂度:O(n^2)        最坏时间复杂度:  O(n^2)     

空间复杂度:O(1) 

图解:

Java代码实现:

publicclass SelectOrder{

public void sort(int[] a){

         int temp = 0;

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

         for(int j=I;j<a.length;j++)

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

         temp = a[i];

         a[i] = a[j];

         a[j] = temp;

}

}

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

                  System.out.println(a[i]);

                  }

}

}

2、 冒泡排序:将第一个数与相邻的数进行比较,如果顺序则继续第二个数与后面相邻的书进行比较;如果逆序则交换位置,继续和后面相邻的数进行比较,完成第一趟冒泡排序。同理,直到数组有序。

最好时间复杂度:O(n)     平均时间复杂度:O(n^2)        最坏时间复杂度:  O(n^2)                 

空间复杂度: O(1) 

l  如果经过一趟冒泡排序不发生数据交换说明数组原本有序。

图示:

代码实现:

public class BubbleOrder {

public void bubble(int[]a){

          int temp=0;

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

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

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

                                    temp = a[j];

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

                                    a[j+1] =temp;

                            }

                   }

          }

          for(int x=0;x<a.length;x++){

                   System.out.println(a[x]);

          }

      }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值