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

    选择排序思想很简单:每次从待排序的子序列中选择最小的那个数据,将其插到已经排好序的序列中,算法描述如下:

    select_sort(A)

    1、for i= 1 to length(A);//用算法描述的下标都是从1开始的

    2、  min=temp=A[i];

    3、  index=i;

    4、  for j=i+1 to length(A)

    5、    if temp > A[j] do temp=A[j], index=j;

    6、  exchange(A[i],A[index]);  

    可以用一个简单的图示描述该算法的执行步骤:

    根据算法描述,可以得出以下代码:

    public class Test{
        public static void main(String[] args)throws InterruptedException{
            int[] array={32,56,34,23,43,45,23,54,56,31,322};
            printArray(array);
            int temp=0,min=0,index=0;
            for(int i=0;i<array.length;i++){
                temp=array[i];
                min=array[i];
                index=i;
                for(int j=i+1;j<array.length;j++){
                    if(min>array[j]){
                        min=array[j];
                        index=j;
                    }
                }
                if(index!=i){
                    array[i]=array[index];
                    array[index]=temp;
                }
            }
            printArray(array);
        }    
        static void printArray(int[] array){
            for(int val:array){
                System.out.print(val+" ");
            }
            System.out.println();
        }
    }

    算法分析:从思想描述就可以得知,简单排序的时间复杂度是O(n^2),它和序列的初始状态无关,无论是最好还是最为,时间复杂度均是O(n^2),而且根据图示可知,该算法不是稳定的。

       

  • 相关阅读:
    【翻译】让你的网站飞起来
    理解ASP.NET MVC中的模型绑定
    【转载】创建定制ASP.NET MVC视图引擎
    修改STM32主频
    Cortex系列ARM核心及体系结构介绍
    递归
    NFD模拟兴趣包的转发
    NX 笔记
    MicroPython 8266 配置
    Python JSON操作
  • 原文地址:https://www.cnblogs.com/codeMedita/p/7424334.html
Copyright © 2011-2022 走看看