排序算法之一 选择排序
来源:互联网 发布:知乎 刘鑫 编辑:程序博客网 时间:2024/06/05 01:56
开始了对排序算法的学习,现在进行系统地整理一下。
说到排序,维基百科上面的解释是,排序算法(Sorting algorithm)是一种能将一串数据依照特定排序方式的一种算法。
对排序算法进行分析和评价,可以从时间复杂度(最差和平均)、空间复杂度和稳定度上面来进行。
当进行排序时,最容易想到的算法就是,遍历待排序的序列,找出最大值、次大值。。。,然后按照大小顺序进行重排。
这就是选择排序的思路。
为了说明方便,约定称待排序的无序序列为 d,元素个数为 n;排序后的结果为递增序列。
选择排序的原理为:选择 n 个元素之中的最小值放到第一个位置,然后在剩下的 (n-1)个元素中选择最大值放到第二个位置,以此类推,一直到剩下最后一个元素,也就是最大值了。
实施步骤如下:
- 首先,i = 0,对数组从 d[i] 到 d[n-1] 进行遍历,找出最大值,放到数组的第一个位置;
- 然后,i = i + 1,重复上一步;
- 最后,终止条件即 i = n - 1。
选择排序是一种非稳定的排序算法,时间复杂度(最差情况下)为O(n2)。
实现的C/C++代码如下:
void selectSort(double *dataIn, int sizeIn){/* 2012/08/23, by wbprime@myopera.com */ for (int i = 0; i < sizeIn; ++i) { for (int j = i + 1; j < sizeIn; ++j) { if (dataIn[i] > dataIn[j] swap(dataIn[i], dataIn[j]); } }}
其中,swap函数用来交换两个变量的值。
void swap(double &a, double &b){/* 2012/08/23, by wbprime@myopera.com */ double temp = a; a = b; b = temp;}
- 排序算法之一 选择排序
- 排序算法之一---选择排序
- 经典算法之一《选择排序》
- 算法学习之一java实现选择排序
- 排序算法之一: 基本的选择,插入,冒泡排序
- 一句话明白排序算法之一——选择排序法
- 排序算法-选择排序
- 排序算法-选择排序
- 排序算法--选择排序
- 排序算法---选择排序
- 排序算法-选择排序
- 排序算法-选择排序
- 排序算法-选择排序
- 排序算法---选择排序
- 排序算法--选择排序
- 排序算法--选择排序
- 排序算法--选择排序
- 排序算法--选择排序
- [Android实例] 仿Windows 文件浏览 文件选择器
- Android特效(持续更新)
- HDU 4396 || HDU 4360
- 正则表达式30分钟入门教程
- 窗体Form的FormStyle属性设置为fsStayOnTop时属性设置不起作用问题探讨。
- 排序算法之一 选择排序
- Chapter 9 Sequential Containers
- mongodb mongodump数据备份,mongorestore恢复命令
- ELF动态解析符号过程(修订版)
- 编写连接数巨大的高负载服务器程序时,经典的多线程模式和select 模式都不再适
- 队列的实现0
- gtags
- poj1157(花店问题+经典DP)
- 插入排序