您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页算法------排序算法------选择排序法

算法------排序算法------选择排序法

来源:爱够旅游网

介绍

选择排序法也算是枚举法的应用,就是反复从未排序的数列中去除最小的元素加入到另一个数列中,最后的结果即为已排序的数列。选择排序法可以使用两种方式排序,即在所有的数据中,若从大到小排序,则将最大值放入第一个位置;若是从小到大排序,则将最小值放入到第一个位置。例如以下示例:
从数列56 24 86 63 16按从小到大的顺序排列,其验算流程大致为以下步骤:

选择排序算法分析

  1. 无论最坏情况,最好情况和平均情况都需要找最大值(或最小值),因此其比较次数为(n-1)(n-2)(n-3)…3+2+1=n(n1)/2此,其时间复杂度为O(n^2)
  2. 由于选择排序是以最大值(最小值)直接与前方未排序的1键值交换,数据排列顺序很有可能被改变,因此它不是稳定排序。
  3. 因为只需要一个额外的空间,所以空间复杂度为最佳。
  4. 比较适用于数据量小或有部分数据已经排过序的情况。

代码实现

package com.lifly.algorithm.sort;

/**
 * @Author: LiFly
 * @Date: 2023/6/25 23:10
 * @Description: 快速排序
 */
public class QuickSort {

    public static void main(String[] args) {

        int[] data = {56, 24, 86, 63, 16};
        System.out.print("原始数据为: ");
        QuickSort quickSort = new QuickSort();
        quickSort.showData(data);
        quickSort.sort(data);
    }

    /**
     * 打印输出
     *
     * @param data
     */
    public void showData(int[] data) {
        for (int datum : data) {
            System.out.print(datum + " ");
        }
        System.out.println("\n");
    }

    /**
     * 快速排序
     *
     * @param data
     */
    public void sort(int[] data) {
        for (int i = 0; i < data.length; i++) {
            int smallest = data[i];
            int index = i;
            int temp;
            for (int j = i+1; j < data.length; j++) {
                if (smallest > data[j]) {
                    smallest = data[j];
                    index = j;
                }
            }
            temp = data[index];
            data[index] = data[i];
            data[i] = temp;
            System.out.print("第"+(i+1)+"次排序结果: ");
            for (int datum : data) {
                System.out.print(datum+" ");
            }
            System.out.println("\n");
        }
        System.out.println("\n");
    }
}

结果显示

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务