zoukankan      html  css  js  c++  java
  • 排序算法之简单选择排序

    概念

    通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换

    Java代码实现

    	public static void select(Integer[] array) {
    		int min;
    		for (int i = 0; i < (array.length-1); i++) {
    			min = i;
    			for (int j = i+1; j < array.length; j++) {
    				if (array[min] > array[j]) min = j;
    			} // end for compare length-i+1 elements
    			// find the smallest element and swap with ith element
    			if (i != min) Helper.swap(array, i, min);
    		} // end for loop length-1 times
    	}
    

     每一次比较并不替换,只是记录下较小值的位置,知道内循环完成,找到最小值,再替换

    时间复杂度分析

    最好情况,初始已为有序序列,需比较n(n-1)/2次,移动0次,时间复杂度为O(n2)

    最差情况,初始为倒序序列,需比较n(n-1)/2次,移动n-1次,时间复杂度为O(n2)

    最好情况和最坏情况的时间复杂度相同,主要是比较次数相同,应该可以用一个标记来优化。

    同冒泡排序算法比较,由于移动次数较少,所以总体要略优于冒泡排序

    空间复杂度分析

    所需要的辅助空间为O(1)

  • 相关阅读:
    Linux在高铁项目的部署环境
    【牛刀小试2】password保
    fcitx的安装_配置
    Mingw:在Linux系统下编译Windows的程序
    linux安装qwt插件linux
    qt超强绘图控件qwt
    WIN7 下 Qt Creator 安装 QWT
    QWT6.0.1+win7下安装说明
    qwt 介绍
    Linux中的svn客户端RabbitVCS-2
  • 原文地址:https://www.cnblogs.com/scarlettxu/p/3488307.html
Copyright © 2011-2022 走看看