算法基础:排序算法之选择排序

算法基础:排序算法之选择排序

实现:数列有序排序

思想:预设一个变量min,并赋值一个初始值 (选择已知数列中的任意一个数值) ,然后通过循环遍历数列,逐个与min做比较,如果比min小,则互换( 位置互换 ),否则就不做操作,以此类推,得出一个有序的排序数列。

工作原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。

下面以这么一个数列{50.36, 464654, 52, 556.12, 96.5, 5451.3, 554, 82, 67.7},实现对它的顺序排序

50.36 464654.0 52.0 556.12 96.5 5451.3 554.0 82.0 67.7

 

 

Java版实现

public class NumSort {

    public static void main(String[] args) {
        double nums[] = {50.36, 464654, 52, 556.12, 96.5, 5451.3, 554, 82, 67.7};
        System.out.println("未排序前的数列:");
        for (int i = 0; i < nums.length; i++)
            System.out.print(nums[i] + "\t");

        double[] sorts = NumSort.selectionSort(nums);
        System.out.println("\n排序后的数列:");
        for (int i = 0; i < sorts.length; i++)
            System.out.print(sorts[i] + "\t");
    }

    // 选择排序(Selection Sort)
    public static double[] selectionSort(double[] nums) {

        int length = nums.length;
        int minIndex;
        double tmp;

        for (int i = 0; i < length - 1; i++) {

            minIndex = i;
            for (int j = i + 1; j < length; j++) {//后面n位数字与minIndex索引位置数字做比较
                if (nums[j] < nums[minIndex]) { //找到最小的数
                    minIndex = j;//保存索引下标
                }
            }

            // 置换位置,既不丢失数字又节省内存
            tmp = nums[i];
            nums[i] = nums[minIndex];
            nums[minIndex] = tmp;

        }

        return nums;
    }

}

程序输出结果:

未排序前的数列:
50.36	464654.0	52.0	556.12	96.5	5451.3	554.0	82.0	67.7	
排序后数列:
50.36	52.0	67.7	82.0	96.5	554.0	556.12	5451.3	464654.0
  50.36 464654.0 52.0 556.12 96.5 5451.3 554.0 82.0 67.7
次序 ↓↓↓程序执行推演过程                
1 50.36 464654.0 52.0 556.12 96.5 5451.3 554.0 82.0 67.7
2 50.36 52.0 464654.0 556.12 96.5 5451.3 554.0 82.0 67.7
3 50.36 52.0 67.7 556.12 96.5 5451.3 554.0 82.0 464654.0
4 50.36 52.0 67.7 82.0 96.5 5451.3 554.0 556.12 464654.0
5 50.36 52.0 67.7 82.0 96.5 5451.3 554.0 556.12 464654.0
6 50.36 52.0 67.7 82.0 96.5 554.0 5451.3 556.12 464654.0
7 50.36 52.0 67.7 82.0 96.5 554.0 556.12 5451.3 464654.0
8 50.36 52.0 67.7 82.0 96.5 554.0 556.12 5451.3 464654.0

Guess you like

Origin blog.csdn.net/u014132947/article/details/112427759