Java-选择排序算法-(一)

选择排序算法

  • 选择排序的原理
  • 选择排序的思路
  • 选择排序的图解步骤
  • 选择排序的实现
  • 选择排序的测试
    • 测试结果

选择排序的原理

每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。

选择排序的思路

选择排序的基本思想:给定数组:int[] array={里面n个数据};

  1. 第一趟排序

[0~n-1]遍历数组,找到最小的数与array[0]交换;

  1. 第二趟排序

[1~n-1]遍历数组,找到最小的数与array[1]交换;

  1. 第三趟排序

[2~n-1]遍历数组,找到最小的数与array[2]交换;

  1. 第i趟排序

以此类推,从[i~n-1]遍历数组,找到最小的数与array[i]交换,当i=n-1-1趟排序,数组最终排序完成。

选择排序的图解步骤

Java-选择排序算法-(一)_第1张图片

选择排序的实现

源码地址:GitHub-AralSea,基本的Int类型数组进行排序的实现 SelectionSort类:代码片.

    /** * 排序选择:单一类型参数传递 * @param array */
    public static void getSort(Integer[] array) {
        if (null != array && array.length > 0) {
            int length = array.length;
            for (int i = 0; i < length; i++) {
                // 记录下表的位置
                int subscript = i;
                for (int j = i + 1; j < length; j++) {
                    // 如果后面的数小于标记下标数字,更新下标位置
                    if (array[j] < array[subscript]) {
                        subscript = j;
                    }
                }
                // 替换
                int flag = array[i];
                array[i] = array[subscript];
                array[subscript] = flag;
            }
        }
}

源码地址:GitHub-AralSea,使用模版(泛型)编写实现,支持多种类型数组 SelectionSort:代码片.

    /** * * 排序选择:使用泛型参数传递 * @param array */
    public static <T extends Comparable<T>> void selectionSort(T[] array) {
        if (null != array && array.length > 0) {
            int length = array.length;
            for (int i = 0; i < length; i++) {
                // 记录下表的位置
                int subscript = i;
                for (int j = i + 1; j < length; j++) {
                    // 如果后面的数小于标记下标数字,更新下标位置
                    if (array[j].compareTo(array[subscript]) < 0) {
                        subscript = j;
                    }
                }
                // 替换
                T flag = array[i];
                array[i] = array[subscript];
                array[subscript] = flag;
            }
        }
    }

选择排序的测试

	public static void main(String[] args) {
        Integer[] array = {3,6,2,9,7,5,8,0,1,4};
        Float[] floats = {3.3f,6.6f,2.2f,9.9f,7.7f,5.5f,8.8f,0.0f,1.1f,4.4f};
        String[] strings = {"e", "g", "a", "c","k", "s"};
        //getSort(array);
        //getSOrtByJava(array);
        selectionSort(array);
        selectionSort(floats);
        selectionSort(strings);
        System.out.println(Arrays.toString(array));
        System.out.println(Arrays.toString(floats));
        System.out.println(Arrays.toString(strings));
    }

测试结果

Java-选择排序算法-(一)_第2张图片
链接: 个人博客.GitHub

你可能感兴趣的:(算法与数据结构)