选择排序原理(java实现)(错,不是真正的选择排序,正确的已发出)

排序是数组中经常用到的功能,这里主要讲选择排序
  选择排序,就是依次固定每个下标,让每个固定下标的数和后面所有数据进行比较,假定现在有一个整型数组{23,4,56,166,2},对它进行从小到大选择排序
  先固定下标0,也就是第一个数23,与下标为1,第二个数4进行比较,发现第二个数4比第一个数23小,那么就将23和4进行交换,变为{4,23,56,166,2},接下来还是下标0和下标2进行比较,56比4要大,不进行交换,之后,下标0和下标3进行比较,166比4大,不进行交换,最后,下标0和下标5进行比较,2比4小,进行交换,数组变为{2,23,56,166,4}
  可以发现,经过这一轮比较,下标0已经是这五个数中最小的数了,接下来还是利用这个原理,固定下标1,与后面的所有的数据进行比较,如果后面的数,小于下标1中的数,那么就交换,大于就继续往下走,需要注意的是,固定的是下标,不是数,也就是说,交换之后,也是用下标1中的数进行比较,经过这一轮比较,数组中第二小的位置就被放到下标1的位置了,即{2,4,56,166,23}
  接下来按照这个原理,对剩下的三个数进行比较,就可以实现从小到大排序,这就是选择排序,下面是java代码实现

class Demo
{
    public static void main(String[] args)
    {
        //定义要比较的数组
        int[] arr = {23,4,56,166,2};
        //调用选择排序函数
        selectSort(arr);
        //打印数组,用逗号间隔
        for(int i=0;i<arr.length;i++)
        {
            if(i!=arr.length-1)
                System.out.print(arr[i]+",");
            else
                System.out.print(arr[i]);
        }
    }

    //选择排序
    //结果:无结果
    //参数:整型数组
    public static void selectSort(int[] arr)
    {
        //外层循环控制总共比较的轮数,5个数总共比较4轮(最后一个数不用比较)
        for(int i=0;i<arr.length-1;i++)
        {
            //从下标i+1开始,直到最后一个数,与第一个数进行比较
            for(int j=i+1;j<arr.length;j++)
            {
                //小于则交换,大于则继续循环
                if(arr[j]<arr[i])
                {
                    //交换
                    exchange(arr,j,i);
                }
            }
        }
    }

    //交换整型数组中的两个下标中的数
    public static void exchange(int[] arr,int i,int j)
    {
        int c;
        c = arr[i];
        arr[i] = arr[j];
        arr[j] = c;
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值