排序(二):选择排序法

前言:有时候,我会觉得,凡事只要有个目标,便可以朝着它努力,这样必定会有结果;可是,慢慢的我发现,在生活中,太多的我们追求的事情,是没有目标的,这也正是我现阶段困惑的东西,我只能一步步的去试探,试图发现个规律。
虽然没有明确的目标,但是我还是要继续加油,对吧?

基本思想:

在排序的一组数中,选出最小的数与第一个数互换,如果本身就是则保持原位,接着再重剩下的数中选出最小的数与第二个数互换,直到最后两个数为止。

大概流程图如图所示:
排序(二):选择排序法_第1张图片

java代码实现:

import java.util.Scanner;

public class SelectSort {

    public static void main(String[] args) {
        int[] numbers = new int[5];
        Scanner scanner = new Scanner(System.in);
        for(int i=0;ifor(int j =0;jout.print(numbers[j]+",");
        }
    }
public static void selectSort(int[] numbers){
    int size = numbers.length;
    int temp = 0;
    for(int i =0;i1;i++){
        int k = i;
        for(int j=size-1;j>i;j--){
            if(numbers[j]

举例运行:
输入:9,4,8,3,6
输出:3,4,6,8,9

时间复杂度O(n*n) 性能上优于冒泡排序 交换次数少
因为冒泡排序法每次循环都要判断是否较大(较小)然后进行交换,而选择排序法则只需选中最小的数与第一个数进行交换,循环下去,所以节省了许多交换次数。

我们可以看下有人做出的时间计算数据:

排序(二):选择排序法_第2张图片

排序(二):选择排序法_第3张图片

从图中我们可以看出:当数组长度到达一定数目,冒泡排序的性能明显低于选择排序。

你可能感兴趣的:(排序算法,选择排序,排序,算法)