zoukankan      html  css  js  c++  java
  • Java选择排序

    算法步骤

    设数组为a[0…n-1]。

    1.      初始时,数组全为无序区为a[0..n-1]。令i=0

    2.      在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交换。交换之后a[0…i]就形成了一个有序区。

    3.      i++并重复第二步直到i==n-1。排序完成。

    算法图示

    算法基本性能

    排序方法 平均情况 最好情况 最坏情况 控件复杂度 稳定性
    选择排序 O(n2) O(n2) O(n2) O(1) 不稳定

    Java代码

    package com.sort;
    
    import java.util.Random;
    
    public class Main3 {
    
        // 从小到大
        private static void sort(int[] array) {
            if (array.length <= 1) {
                return;
            }
            for (int i = 0; i < array.length - 1; i++) {
                int min = i;
                /**
                 * 在i+1~array.length-1的下标范围内找出最小的一个元素的下标
                 */
                for (int j = i + 1; j < array.length; j++) {
                    if (array[min] > array[j]) {
                        min = j;
                    }
                }
                /**
                 * 如果最小的下标变化了,那么交换
                 */
                if (min != i) {
                    int temp = array[i];
                    array[i] = array[min];
                    array[min] = temp;
                }
            }
        }
    
        /**
         * 获取指定长度的随机数组
         */
        public static int[] getRandomArray(int n) {
            int[] array = new int[n];
            Random random = new Random();
            for (int i = 0; i < array.length; i++) {
                array[i] = random.nextInt(500);
            }
            return array;
        }
    
        /**
         * 打印指定数组
         */
        public static void outputArray(int[] array) {
            for (int i : array) {
                System.out.print(i + " ");
            }
            System.out.println("");
        }
    
        public static void main(String[] args) {
            int[] array = getRandomArray(10);
            outputArray(array);
            sort(array);
            outputArray(array);
        }
    }
  • 相关阅读:
    flash编程实例源代码下载
    js4:with,for in语句,windows,location对象的使用
    js3:数据类型,数组,String各个属性,以及字符串表达式用eval计算
    挺喜欢这个网站的
    C#Url传递中文参数时解决方法
    .NET设计模式系列文章《转》
    maven surefire plugin介绍
    spring-boot-maven-plugin 插件的作用
    github提交表情包
    接口管理工具
  • 原文地址:https://www.cnblogs.com/alias-blog/p/5787311.html
Copyright © 2011-2022 走看看