博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单选择排序
阅读量:2165 次
发布时间:2019-05-01

本文共 2382 字,大约阅读时间需要 7 分钟。



算法思路: 每次在待排序序列中选取一个最小的元素放入已排好序列最后,总共进行n-1趟就能完成排序。

性能分析: 

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

               空间复杂度: O(1)

               稳定性: 不稳定

private static void selectSort(int[] arrays) {        /*        9 8 7 10 6        第一趟: 走三次                  9 只需与8 7 10 6比较 以此类推        */        for (int i = 0; i < arrays.length - 1; i++) {  //循环n-1趟            int min = i;            for (int j = i + 1; j < arrays.length; j++) {                if (arrays[min] > arrays[j])                    min = j;            }            if (min != i) {                /*int temp = arrays[min];                arrays[min] = arrays[i];                arrays[i] = temp;*/                arrays[min] ^= arrays[i];                arrays[i] ^= arrays[min];                arrays[min] ^= arrays[i];            }        }

完整代码:

package sort;import java.util.Arrays;import java.util.Scanner;/** * 选择排序 * 算法思路:每次在待排序序列中选取一个最小元素放入已排好序列最后,总共进行n-1趟就能完成排序 */public class BigData01 {    public static void main(String[] args) {        int[] arrays = input();        selectSort(arrays);        print(arrays);    }    /**     * 打印数组     * @param arrays     */    private static void print(int[] arrays) {        System.out.print("升序后的数组为: ");        for (int array : arrays) {            System.out.print(array + " ");        }        /*System.out.println();        System.out.println(Arrays.toString(arrays));*/    }    /**     * 选择排序算法: 从小到大排序     * @param arrays     */    private static void selectSort(int[] arrays) {        /*        9 8 7 10 6        第一趟: 走三次                  9 只需与8 7 10 6比较 以此类推        */        for (int i = 0; i < arrays.length - 1; i++) {  //循环n-1趟            int min = i;            for (int j = i + 1; j < arrays.length; j++) {                if (arrays[min] > arrays[j])                    min = j;            }            if (min != i) {                /*int temp = arrays[min];                arrays[min] = arrays[i];                arrays[i] = temp;*/                arrays[min] ^= arrays[i];                arrays[i] ^= arrays[min];                arrays[min] ^= arrays[i];            }        }    }    /**     * 获取多个数值     *     * @return     */    public static int[] input() {        Scanner scanner = new Scanner(System.in);        System.out.print("请依次输入5个数: ");        int[] arrays = new int[5];        for (int i = 0; i < arrays.length; i++) {            arrays[i] = scanner.nextInt();        }        return arrays;    }}

 

转载地址:http://opczb.baihongyu.com/

你可能感兴趣的文章
Logistic regression 为什么用 sigmoid ?
查看>>
Logistic Regression 为什么用极大似然函数
查看>>
SVM 的核函数选择和调参
查看>>
LightGBM 如何调参
查看>>
用 TensorFlow.js 在浏览器中训练神经网络
查看>>
cs230 深度学习 Lecture 2 编程作业: Logistic Regression with a Neural Network mindset
查看>>
梯度消失问题与如何选择激活函数
查看>>
为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
查看>>
为什么在优化算法中使用指数加权平均
查看>>
什么是 Q-learning
查看>>
用一个小游戏入门深度强化学习
查看>>
如何应用 BERT :Bidirectional Encoder Representations from Transformers
查看>>
5 分钟入门 Google 最强NLP模型:BERT
查看>>
强化学习第1课:像学自行车一样的强化学习
查看>>
强化学习第2课:强化学习,监督式学习,非监督式学习的区别
查看>>
强化学习第3课:有些问题就像个赌局
查看>>
强化学习第4课:这些都可以抽象为一个决策过程
查看>>
强化学习第5课:什么是马尔科夫决策过程
查看>>
强化学习第6课:什么是 Crossentropy 方法
查看>>
强化学习第7课:交叉熵方法的一些局限性
查看>>