zoukankan      html  css  js  c++  java
  • 排序算法-选择排序

    选择排序是也是一种简单粗暴的排序算法。实现原理是一直找无序序列中的最小值(或者最大值)与待排序下标进行交换。

    1.代码实现

    以java实现为例:

    public class SelectionSort {
        public static int[] selectionSort(int[] nums) {
            //循环遍历序列的每一个下标
            for (int i = 0; i < nums.length; i++) {
                int minIndex = i; //记录当前无序序列最小元素下标
                for (int j = i; j < nums.length; j++) {
                    if(nums[minIndex] > nums[j]){
                        minIndex = j;
                    }
                }
                //如果最小元素下标不是待排序下标,就将两个元素交换,把当前最小元素放到当前排序下标中
                if(minIndex!=i){
                    int temp = nums[minIndex];
                    nums[minIndex] = nums[i];
                    nums[i] = temp;
                }
            }
            return nums;
        }
    
        public static void main(String[] args) {
            int[] nums = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 10 };
            int[] newNums = selectionSort(nums);
            for (int x : newNums) {
                System.out.print(x+" ");
            }
        }
    }

    2.数据运行解析 

    数据的分解示例如下

    [9 8 7 6 5 4 3 2 10]    每次拿到最小元素与待排序下标交换
    ->[2 8 7 6 5 4 3 9 10]
    ->[2 3 7 6 5 4 8 9 10]
    ->[2 3 4 6 5 7 8 9 10]
    ....

    3.复杂度分析

    选择排序在最好最差和平均时间复杂度都是O(n²),空间复杂度为T(1)。

  • 相关阅读:
    29-赫夫曼树
    28-线索化二叉树
    27-顺序存储二叉树
    26-二叉树的遍历查找和删除
    25-二叉树的概念
    24-逻辑结构分析
    23-哈希表
    22-查找算法
    21-堆排序
    Mui-列表/table-view
  • 原文地址:https://www.cnblogs.com/cykfory/p/14103305.html
Copyright © 2011-2022 走看看