排序算法(3)选择排序

原理:思想:两个变种(1)单侧选择:在一个无序数组中选择出每一轮中最大值(或最小值)元素,放到最前面或最后面(升序)(2)双向选择:在一个无序数组中选择出每一轮中最值元素,然后把这一轮中最前面的元素和min交换,最后面的元素和max交换;然后缩小范围(开始位置(begin++)++,最后位置(end–)--),重复上面步骤,最终得到有序序列(升序)。

代码实现:

单侧选择版:

void SelectSort1(int a[], int n)
{for (int i = 0; i < n; i++){int temp = i;for (int j = i+1; j < n; j++){if (a[temp] < a[j]) temp = j;//升序,改成 > 是降序}swap(a[i],a[temp]);}
}

双向选择版:

void SelectSort(int a[], int n)
{int begin = 0;int end = n - 1;while (begin < end){int min = begin, max = begin;for (int i = begin; i <= end; i++)//得出这一段里的最大值和最小值{if (a[min] > a[i])min = i;if (a[max] < a[i])max = i;}//最小值与begin交换,最大值与end交换,升序。反之,是降序swap(a[min], a[begin]);if (max == begin)//如果首元素恰好是最大的,则需要先把min 和 max的位置交换,再交换,否则经过两次交换,又回到原来的位置max = min;swap(a[max], a[end]);begin++;end--;}
}

排序算法(3)选择排序相关推荐

  1. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  2. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

  3. 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...

  4. 堆排序算法c语言筛选法,【排序】排序算法之选择排序

    排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...

  5. 【排序算法】选择排序(Selection sort)

    选择排序(Selection sort)是一种简单直观的排序算法. 选择排序介绍 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余未排序的元 ...

  6. Java经典排序算法:选择排序,动图演示排序过程

    Java经典排序算法:选择排序,动图演示排序过程 示意动图: public class Main {public static void main(String[] args) {new Main() ...

  7. 【排序算法】选择排序(C语言)

    [排序算法]-- 选择排序 目录 一.选择排序的原理 二.选择排序的代码实现 三.选择排序的优化 1. 优化思路 2. 排序优化后问题 3. 优化代码的实现 四.选择排序的效率 一.选择排序的原理 ​ ...

  8. 选择排序算法流程图_常用排序算法之选择排序

    前两天给大家分享了冒泡排序和插入排序(没关注的同学,可以关注后查看历史消息),今天继续给大家分享另一种常用的排序算法--选择排序. 选择排序 选择排序和插入排序很相似,也区分已排序区间和未排序区间,选 ...

  9. 排序算法之选择排序(简单选择排序、堆排序)

    选择排序(简单选择排序.堆排序) 选择排序 简单选择排序 概念 算法实现 堆排序 概念 算法实现 后续 选择排序 选择排序的基本思想是:每一趟在待排序元素中选取关键字最小(或最大)的元素加入有序子序列 ...

最新文章

  1. php SQLite mysql_PHP实现的sqlite数据库连接类
  2. 这是我见过最全面的Python装饰器详解!没有学不会这种说法
  3. zabbix db partition
  4. 大数据学习规划(新手入门)
  5. WORD列表缩进的文本起始点
  6. DevOps(过程、方法与系统的统称)是什么
  7. android的ui怎么做到流畅,android提高UI的流畅度
  8. 2017CCPC哈尔滨 F:Permutation(构造)
  9. 10.03今日暂时停更博客
  10. ununtu16.04+python3+selenium+firefox环境搭建
  11. 图像裁剪插件--cropper的基本使用
  12. 2016.11.03回顾 more excel交换两列
  13. RFBnet论文及其代码详解
  14. FPGA课设实验二:计数器设计与仿真
  15. 机器学习之回归与分类
  16. pycharm 2017.3破解方法
  17. 后台数据不清理android,android 后台被数据清理后切换到前台数据丢失问题
  18. grub4dos 启动ubuntu 12.04
  19. 机器人门禁控制盒怎么接线方法_门禁电锁如何接线
  20. 《Vue+Spring Boot前后端分离开发实战》专著累计发行上万册

热门文章

  1. 老司机出招: 程序员如何写简历和面试?
  2. 如何控制视频输出大小,视频大小实现固定
  3. 函数计算机度数怎么打,excel怎么输入度分秒并可以计算?(角度表格)
  4. 在 Ubuntu 服务器上重启 php-fpm失败
  5. 蓝桥杯嵌入式类比赛经验分享
  6. unity3d著名项目-Dark Tree翻译
  7. 2020.7.16集训总结
  8. 宝付提醒看到这种信息千万不要点
  9. python数据逆透视_Python数据神器pandas,轻松搞定嵌套表头——透视与逆透视
  10. 算法工程师八股文——序言