码迷,mamicode.com
首页 > 编程语言 > 详细

Java数组排序算法之直接选择排序

时间:2019-01-03 12:05:58      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:int   .so   public   mil   顺序   bsp   []   一个   sof   

1.基本思想

直接选择排序的基本思想是将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素值,注意这里区别冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换。

与冒泡排序相比,直接选择排序的交换次数要少很多,因此速度更快些。

2.算法示例

每一趟从待排序的数组元素中选出最小(或最大)的一个元素,顺序的放在已排好序的数组元素前或后,直到全部待排序的数据元素排完。

例如有一个6个元素的数组【63 4 24 1 3 15】,排序大致过程如下所述:

第1轮排序:63和15交换位置:【15 4 24 1 3】63

第2轮排序:3和24交换位置:【15 4 3 1】24 63

第3轮排序:15和1交换位置:【1 4 3】15 24 63

第4轮排序:3和4交换位置:【1 3】4 15 24 63

第5轮排序:将3交换到元素‘4‘前面:【1】3 4 15 24 63

3.算法实现

public class SelectSort {
    public static void main(String[] args) {
        int array[] = {63, 4, 24, 1, 3, 15};
        SelectSort sorter = new SelectSort();
        sorter.sort(array);
    }

    public void sort(int array[]) {
        int index;
        for (int i = 1; i < array.length; i++) {
            index = 0;
            for (int j = 1; j <= array.length - i; j++) {
                if (array[j] > array[index]) {
                    index = j;
                }
            }
            // 交换在位置array.lenth-i和index(最大值)上的两个数
            int temp = array[array.length - i];
            array[array.length - i] = array[index];
            array[index] = temp;
        }
        showArray(array);
    }

    public void showArray(int array[]) {
        for (int i : array) {
            System.out.print(" >" + i);
        }
        System.out.println();
    }
}

输出结果如下图所示:

技术分享图片

Java数组排序算法之直接选择排序

标签:int   .so   public   mil   顺序   bsp   []   一个   sof   

原文地址:https://www.cnblogs.com/zwwhnly/p/10213276.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!