java算法(一) 直接选择排序

邮差的信 提交于 2020-03-17 17:40:22

一、基本概念

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(注:要把最大最小的元素和起始的元素交换),

然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

 直接选择排序

 

二、算法特点

是否稳定:  false

平均时间复杂度:O(n^2)

最差时间复杂度:O(n^2)

最优时间复杂度:O(n^2)

 

package com.jiafuwei.java;



/**
 * java 选择排序
 * @author jfw
 *
 */
public class SelectionSort {
    public static void main(String[] args) {
        int [] collections = {36,23,56,789,342,456,34,7,234,4578,32};
        SelectionSort selectionSort = new SelectionSort();
        selectionSort.sort(collections);
        for (int i = 0; i < collections.length; i++) {
            System.out.print(collections[i]+" ");
        }
    }
    
    public void sort(int [] data) {
        for(int k=0;k<data.length;k++){
            int min = k;
            //先把这一圈循环中的第一个数和后面的数进行比较 如果大于后面的数 然后把后面数的下标值记录下来
            //注意 这里i=k 是从k后面开始循环
            for(int i=k;i<data.length;i++){
                if(data[min]>data[i]){
                    min = i;
                }
            }
            //把这一圈循环中的一个数记录下来
            int temp = data[k];
            //把这一圈循环中的一个数变成最小的数
            data[k] = data[min];
            //把以前最小数的位置  改变为当时的第一个数
            data[min] = temp;
        }
    }
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!