纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

java选择排序 Java排序算法之选择排序

在下木子李   2021-05-06 我要评论
想了解Java排序算法之选择排序的相关内容吗,在下木子李在本文为您仔细讲解java选择排序的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:java选择排序,java算法,下面大家一起来学习吧。

一、选择排序

选择排序就是在每一次遍历过程中将数组中值最小的排到当前的第一位。

总共需要(数组长度-1)次遍历,在每次遍历中假定第一位索引的值为最小值,然后与下一个值对比,如果最小索引所在值大于其他值就将小的那一个索引当作最小值索引,接着继续对比最小索引所在值与下一个索引的值,重复此操作,最终就会在此次遍历中得到最小值及其索引,将最小值与第一位的值进行交换,这样就将最小值放到了数组开头,完成本次遍历。

选择排序的时间复杂度为O(N^2)

选择排序

二、代码实现

package com.example.algorithmdemo.sortingAlgorithm;

/**
 * 选择排序
 */
public class SelectionSort {

    /**
     * 数组排序
     * @param a
     */
    public static void sort(Comparable[] a){
        for(int i = 0;i<a.length-1;i++){
            //假设本次遍历,最小值的索引为i
            int minIndex = i;
            for(int j = i + 1;j < a.length;j++){
                if(greater(a[minIndex],a[j])){
                    //更换最小值索引
                    minIndex = j;
                }
            }
            //交换i索引和minIndex索引的值
            exchange(a,i,minIndex);
        }
    }

    /**
     * 判断参数a是否比参数b大
     * 返回true/false
     * @param a
     * @param b
     * @return
     */
    private static boolean greater(Comparable a,Comparable b){
        return a.compareTo(b)>0;
    }

    /**
     * 数组元素i和j交换位置
     * @param a
     * @param i
     * @param j
     */
    private static void exchange(Comparable[] a,int i,int j){
        Comparable temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
}

三、测试

package com.example.algorithmdemo.test;

import com.example.algorithmdemo.sortingAlgorithm.SelectionSort;

import java.util.Arrays;

public class SelectionTest {
    public static void main(String[] args) {
        Integer[] a = {3,2,6,8,1,4,5,7};
        SelectionSort.sort(a);
        System.out.println(Arrays.toString(a));
    }
}

在这里插入图片描述


相关文章

猜您喜欢

  • JavaScript使用宏 在JavaScript中怎样使用宏详解

    想了解在JavaScript中怎样使用宏详解的相关内容吗,字节前端在本文为您仔细讲解JavaScript使用宏的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:javascript使用宏,js宏,下面大家一起来学习吧。..
  • Python爬取最新更新的小说网站 Python爬虫之爬取最新更新的小说网站

    想了解Python爬虫之爬取最新更新的小说网站的相关内容吗,LaoYuanPython在本文为您仔细讲解Python爬取最新更新的小说网站的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Python爬取小说网站,python爬取网站,下面大家一起来学习吧。..

网友评论

Copyright 2020 www.QB5200.com 【亲宝软件园】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式