排序算法总结(1)--选择排序

原创 2017年05月18日 19:47:00

一、简介

选择排序是最简单的排序算法。考虑存储在数组A中的n个数:首先找出A中最小的元素并将其与A[0]交换。接着找到A[1]到A[n-1]中最小的数并与A[1]交换。对A中前n-1个数采用同样的操作。

二、伪代码

for i=0 to A.length-1
        j=findMin(A,i);  //找到A[i,...,end]中最小元素的索引j
        if (A[i]>A[j])
            swap(A[i],A[j]);  //交换A[i]和A[j]

三、代码实现

public class Method {
        public static void main(String[] args) {
            int[] array={31,41,59,26,41,58,1,2};
            selectSort(A);
        }

        public static void selectSort(int[] A){
            for(int i=0;i<A.length;i++){
                //findMin(array,i)
                int j=findMin(A,i);
                if(A[i]>A[j]){
                    int temp=A[i];
                    A[i]=A[j];
                    A[j]=temp;
                }
            }
        }

        public static int findMin(int [] array,int index){
            int j=index;
            for (int i=index+1;i<array.length;i++){
                if (array[j]>array[i]){
                    j=i;
                }
            }
            return j;
        }   
    }

四、复杂度分析

时间复杂度:O(n^2)
空间复杂度:O(1) ,原址排序
每进行一次循环排序,至少有一个元素可以确定最终位置。

五、注意事项

对于长度为n的数组,选择排序需要n(n-1)/2次比较和最多n-1次交换
比较次数:(n1)+(n2)+...+2+1=n(n1)/2;
选择排序的两个特点:
1、比较次数和输入无关:在每次循环中,为了找到最小元素扫描一遍数组并不能为下一次扫描提供有用的信息。一个已经有序的数组或全部元素相同的数组和一个随机排列的数组比较的次数一样。
2、数据的移动最少:每次循环最多交换一次,所以最多交换n-1次,交换次数和数组大小成线性关系。

相关文章推荐

Java选择排序算法源码

  • 2013年12月31日 21:53
  • 3KB
  • 下载

选择排序算法

  • 2014年03月25日 14:36
  • 1.02MB
  • 下载

简单选择排序算法总结

public class SelectSort { public static void selectSort(int[] array) { int min = 0; int i,j; ...

直接插入和选择排序算法

  • 2012年04月01日 17:52
  • 1KB
  • 下载

(1)排序算法——选择排序

排序算法有很多,包括选择排序、插入排序、冒泡排序、合并排序、快速排序、堆排序等,这些算法各有优点。首先,我们先看下不同时间复杂度的区别: 选择排序算法是在列表中找到最小(大)数,并将其放在表头(尾)...

c#实现选择排序算法

  • 2009年06月23日 17:41
  • 12KB
  • 下载

选择排序算法的动态演示程序

  • 2012年04月21日 17:12
  • 31KB
  • 下载

排序算法总结(2)——选择排序

接着上一篇文章《排序算法总结(1)——插入排序》的来。 排序主要分为插入排序、选择排序、交换排序、归并排序、计数(也有叫分配)排序。现在总结一下交换排序 二、选择排序 选择排序方案是一类...

C语言---选择排序算法源代码

  • 2011年11月16日 13:33
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序算法总结(1)--选择排序
举报原因:
原因补充:

(最多只允许输入30个字)