zoukankan      html  css  js  c++  java
  • 一种名声不好的排序算法——简单选择排序算法

    转载请注明出处,谢谢!

    简单选择排序算法思想:

    设:排序区间R[1 ... n];

    • 在排序的过程中,整个排序区间被分为两个子区间:有序区R[1 ... i-1]和无序区R[i ... n];
    • 共进行n-1趟排序,每趟排序都是选择无序区的最小记录Rmin;将Rmin与无序区的第一条记录位置互换,使得无序区长度减1,有序区长度增1。

    选择排序算法:

    • 简单选择排序算法
    • 堆排序算法

    算法说明:

    • 名声不好的排序算法,与冒泡算法一起常年在青铜段位双排。

    • 运行时间与输入无关。

      • 每次扫描最小元素并不会为下次扫描最小元素带来好处 。
      • 比如,已经有序的数组和无序的数组,排序时间基本相同。
    • 所有排序算法中,交换次数是最少的。

    • 大约需要 $ frac {N^2}{2} $ 次比较和 (N) 次交换。


    实现:

    import java.util.ArrayList;
    import java.util.Random;
    
    public class Selection {
    
    	public static void sort(ArrayList<Integer> al) {
    
    		for (int i = 0; i < al.size(); i++) {
    			int min = i;
    			Integer tempInt = al.get(i);
    			for (int j = i + 1; j < al.size(); j++) {
    				if (al.get(min) > al.get(j)) {
    					min = j;
    				}
    
    			}
    			al.set(i, al.get(min));
    			al.set(min, tempInt);
    
    			System.out.println(al);
    		}
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		ArrayList<Integer> al = new ArrayList<>(10);
    		// 创建一个随机数生成器
    		Random rand = new Random();
    		// 添加1-100的随机整数
    		for (int i = 0; i < 10; i++) {
    			al.add(new Integer(Math.abs(rand.nextInt(100))+1));
    		}
    		System.out.println("The ArrayList Sort Before:
    " + al+"
    ");
    		Selection.sort(al);
    	}
    
    }
    
    Output:
    
    The ArrayList Sort Before:
    [81, 39, 13, 56, 27, 100, 98, 97, 68, 37]
    sorting:
    [13, 39, 81, 56, 27, 100, 98, 97, 68, 37]
    [13, 27, 81, 56, 39, 100, 98, 97, 68, 37]
    [13, 27, 37, 56, 39, 100, 98, 97, 68, 81]
    [13, 27, 37, 39, 56, 100, 98, 97, 68, 81]
    [13, 27, 37, 39, 56, 100, 98, 97, 68, 81]
    [13, 27, 37, 39, 56, 68, 98, 97, 100, 81]
    [13, 27, 37, 39, 56, 68, 81, 97, 100, 98]
    [13, 27, 37, 39, 56, 68, 81, 97, 100, 98]
    [13, 27, 37, 39, 56, 68, 81, 97, 98, 100]
    [13, 27, 37, 39, 56, 68, 81, 97, 98, 100]
    
    


    ——@guoyangde http://www.cnblogs.com/LittleTreasureBox/p/8904016.html

  • 相关阅读:
    jQuery找出所有没有disabled属性的checkbox
    jQuery prop()方法
    Aliyun 中PHP如何升级
    The connection to the server localhost:8080 was refused
    ks8集群扩容新增节点,以及xshell无法访问的问题
    设置小程序模板消息keyword_id_list问题
    git如何新建仓库,并初始化代码
    k8s应用配置详解
    git如何把分支变成master
    nginx首页根据IP跳转
  • 原文地址:https://www.cnblogs.com/LittleTreasureBox/p/8906220.html
Copyright © 2011-2022 走看看