Java基础---选择排序和冒泡排序

本文介绍了Java中的选择排序和冒泡排序算法。选择排序包括从前往后和从后往前两种方式,通过减少不必要的交换进行优化。冒泡排序则讨论了大数下沉和小数上浮的原理,以及优化方案,指出最佳情况下时间复杂度可降至O(n)。
摘要由CSDN通过智能技术生成

选择排序(Selection sort)

它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完一次循环,他的平均时间复杂度是О(n²)

这里写图片描述

以一次循环为例:arr[0]中的值分别与arr[1]~arr[3]中的值比较,则进行三次比较,结果流程如下:

/ arr[0] arr[1] arr[2] arr[3]
第一次 3 4 2 1
第二次 2 4 3 1
第三次 1 4 3 2

这里由于是从小到大,所以选取了数组里最小的元素出来,排在了起始位置。

那么,假设数组arr.length=n,只要唯一确定前n-1或后n-1个数就可以完成对数组的排序。那么最外层循环可以确定:n-1次外层。
内层循环确定:
第一次比较要(n-1)次
第二次比较要(n-2)次
………………..
倒数第二次要2次
最后一次需要1次,因为最后一个数不需要自己和自己比较。

1.若从前往后排序

要排好arr[0]~arr[n-2]共n-1个数就可以确定这个有序数组了。

public class SelectSort {
    public static void selectSort1(int a[]){
    //两层循环,最外层确定n-1次即可完成排序
        for(int i=0;i<a.length-1;i++){
        //内层排序,次数从n-1到1
            for(int j=i+1;j<a.length;j++){
                if(a[i]>a[j]){
                    int temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            System.out.println("********");
            for(int m=0;m<a.length;m++){
               System.out.print(a[m]+" ");
            }
            System.out.println();
            }

        }
    }
    public static void main(String args[]){
    //测试实例
        int []arr1 = {
  4,3,2,1,0};
        selectSort1(arr1);
        System.out.print("结果是");
        for(int a=0;a<arr1.length;a++){
            System.out.print(arr1[a]+" ");
        }
    }
}

运行过程及结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值