博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法(2)—选择排序
阅读量:7217 次
发布时间:2019-06-29

本文共 1112 字,大约阅读时间需要 3 分钟。

  选择排序(Selection Sort)

  

      基本思想:第i趟排序从序列的后n-i+1(i=1,2...n-1)个元素中选择一个最小或最大的元素,与该n-i+1个元素的最前面那个元素进行位置交换,直到i=n-1(每一趟的选择排序就是从序列中

未排序的元素中选择一个最小或最大的元素,将该元素与未排序元素的第一个元素交换位置)

      举例分析:设有一个数据元素序列{3,6,4,2,11,10,5},要求按从小到大顺序排列,排序步骤如下图所示:

      从上图可知:一个包含N个元素的序列,需要N-1趟的选择排序就可以将原序列排列有序,代码如下所示(C#实现):

1 public static int[] SortBySelectionSort(int[] m_SourceArray) 2         { 3             int tmp; 4             int length = m_SourceArray.Length; 5             for (int i = 0; i < length - 1; i++) 6             { 7                 int min = i; 8                 for (int j = i+1; j < length; j++) 9                 {10                     if (m_SourceArray[j] < m_SourceArray[min])11                         min = j;12                 }13                 if (i != min)14                 {15                     tmp = m_SourceArray[i];16                     m_SourceArray[i] = m_SourceArray[min];17                     m_SourceArray[min] = tmp;18                 }19             } 20             return m_SourceArray;21         }

    算法分析:选择排序属于不稳定的排序,时间复杂度为:O(N2), 空间复杂度:O(1)    

 

   

转载于:https://www.cnblogs.com/Hua-Min/p/SelectionSort.html

你可能感兴趣的文章
leetcode599
查看>>
String类中“==”和“equals()”的区别
查看>>
leetcode--883
查看>>
the application could not be verified
查看>>
[转]Centos配置国内yum源
查看>>
redis数据类型和应用场景
查看>>
Spring IOC
查看>>
Fragment的onCreateView和onActivityCreate之间的区别(转)
查看>>
AC日记——统计难题 hdu 1251
查看>>
在仿真器中运行时跳过Windows Azure Startup任务
查看>>
android 获取路径目录方法以及判断目录是否存在,创建目录
查看>>
数列问题[HAOI2004模拟]
查看>>
2012各大IT公司校招笔试题整理
查看>>
phpcms 后台分页
查看>>
《需求工程》阅读笔记之六
查看>>
架构阅读笔记5
查看>>
IIS5.1使用虚拟目录部署网站
查看>>
Git 深度学习填坑之旅三(分支branch、远程操作)
查看>>
括号匹配问题
查看>>
UVA 10766 Organising the Organisation
查看>>