美文网首页
排序算法之--选择排序

排序算法之--选择排序

作者: 木讷山人_a986 | 来源:发表于2018-03-18 12:02 被阅读0次

一、原理

每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。也就是:每一趟在n-i+1(i=1,2,3...n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。

二、基本思想

给定数组:int[] arr = {里面有n个数据};第1趟排序,在待排序数据arr[1]arr[n]中选出最小的数据,将它与arr[1]交换;第2趟,在待排序数据arr[2]arr[n]中选出最小的数据,将它与arr[2]交换;以此类推,在i趟待排序数据arr[i]~arr[n]中选出最小的数据,将它与arr[i]交换,直到全部排序完成。

三、举例

数组 int[] arr = {5,2,8,9,1};


第一趟排序:原始数据:5,2,8,9,1
最小数据是1,把1放在首位,也就是1和5互换位置,
排序结果:1,2,8,9,5


第二趟排序:
第1以外的数据{2,8,9,5}进行比较,2最小,不变
排序结果:1,2,8,9,5


第三趟排序:
除1,2以外的数据{8,9,5}进行比较,5最小,5和8互换位置,
排序结果1,2,5,8,9


第四趟排序:
除1,2,5以外的数据{8,9}进行比较,8最小,不变。
排序结果1,2,5,8,9


注:每一趟排序获得最小数的方法:for循环进行比较。


代码实例:

/**
 * 选择排序:每一趟从待排序的记录中选出最小的元素,顺序放在已经排好序的序列最后,直到全部记录排序完毕。
 *          也就是每一趟在n-i+1(i=1,2,3...n)个记录中选取关键字最小的记录作为有序序列中第i个记录。
 * Created by chen on 2017/12/10.
 */
public class SelectionSort {

    public static void sort(int[] arr) {
        int n = arr.length;//数组长度
        for (int i = 0; i < n; i++) {
            //寻找[i,n)区间里的最小值的索引
            int minIndex = i;
            for (int j = i+1; j < n; j++){
                if (arr[j] < arr[minIndex])
                    minIndex = j;
            }
            swap(arr, i, minIndex);
        }
    }

    /**
     * 交换数组位置
     * @param arr
     * @param i
     * @param j
     */
    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        int[] arr = {10,9,8,7,6,5,3,2,1};
        SelectionSort.sort(arr);
        for (int i = 0; i < arr.length; i++){
            System.out.print(arr[i]);
            System.out.print(" ");
        }
        System.out.println();
    }
}

相关文章

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 算法理解之排序-选择排序

    算法理解之排序-选择排序 选择排序是一种简单直观的排序算法, 以当前点为锚点, 向后依次进行比较所有未排序元素, ...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 3.1-选择排序-简单选择排序

    参考链接 选择排序:简单选择排序(Simple Selection Sort) 白话经典算法系列之四 直接选择排序...

  • JS实现排序算法

    原文:常见排序算法之JavaScript实现 - 知乎 目录 冒泡排序 选择排序 插入排序 合并排序 快速排序 1...

  • 算法4:插入排序和选择排序算法的比较

    排序算法列表电梯: 选择排序算法:详见 《算法4》2.1 - 选择排序算法(Selection Sort), Py...

  • 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

    图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

  • PHP常用算法

    基于选择的排序算法 常见的基于选择的排序算法有:冒泡排序、插入排序、选择排序、归并排序和快速排序,我们在选在排序算...

  • 算法and数据结构

    算法 冒泡排序 选择排序 计数排序

  • 基础排序算法总结

    排序算法分为内部排序和外部排序,而我们经常说的基础排序算法,都是内部排序算法。包括冒泡排序,选择排序,插入排序,快...

网友评论

      本文标题:排序算法之--选择排序

      本文链接:https://www.haomeiwen.com/subject/hlleqftx.html