直接选择排序每一趟排序都会从未排序的序列中选择出最小的元素来,然后跟未排序序列的第一个元素交换。这样经过n-1趟排序后,每趟排序选择出的

最小元素便成了有序的序列。

  算法实现如下:

#include <stdio.h>
#include <stdlib.h>void SelectSort(int A[],int n)
{int i, j, index, temp;for(i = 0; i < n-1; i++)        // 进行n-1趟排序
    {index = i;                  // 辅助变量index用来存储最小元素的下标for(j = i+1; j <= n-1; j++) // 遍历未排序的序列
        {if(A[j] < A[index])index = j;}if(index != i)              // 将选择出的最小元素与未排序序列中的第一个元素交换
        {temp = A[index];A[index] = A[i];A[i] = temp;}}
}

  直接选择排序的时间复杂度为O(n2),空间复杂度为O(1)。直接选择排序同样是一种不稳定的排序算法(不稳定的排序算法有:快排、希尔排序、直接选择排序、堆排序)。

转载于:https://www.cnblogs.com/greedyco/p/7149209.html

排序算法——直接选择排序相关推荐

  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. 排序算法(3)选择排序

    排序算法(3)选择排序 原理:思想:两个变种(1)单侧选择:在一个无序数组中选择出每一轮中最大值(或最小值)元素,放到最前面或最后面(升序)(2)双向选择:在一个无序数组中选择出每一轮中最值元素,然后 ...

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

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

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

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

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

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

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

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

最新文章

  1. c语言想调用函数怎么弄43,如果想要调用这个函数,还应该怎么写
  2. 【廖雪峰python入门笔记】for循环
  3. 产品经理的「七宗罪」
  4. 配置MySQL5.7基于keepalived的GTID的双主复制
  5. ios 主题切换 思路_iOS 使用 NSObject 的分类实现快速切换主题
  6. 现共收到 5 个分组,其目的地址分别为: (1) 128.96.40.10 (2) 128.96.41.12 (3) 128.96.41.151 (4) 192.4.123.17 (5) 192.4.
  7. 在easyui中如何使用ajax请求数据,Ajax 中正常使用jquery-easyui (转)
  8. mysql 8.0 java连接报错:Unknown system variable 'query_cache_size'
  9. mqtt发布json数据_微服务实战:从架构到发布(一)
  10. 三星手机真假测试软件,#三星EVO Plus MicroSD存储卡# 火眼金睛识真伪、评测软件测性能...
  11. VS2015+WDK10+Win10 Win7以上系统驱动发开环境搭建
  12. 【读书笔记】python3 网络爬虫开发实战(1)
  13. Unity3d报错:Error building Player: Win32Exception: ApplicationName='xxxxxx/zipalign.exe'
  14. 板材品牌之生态板吊顶好还是桑拿板好
  15. 小程序通过background-image设置背景图片
  16. three doors
  17. 梧桐数据宣布获得千万级Pre-A轮融资
  18. pycocotools使用教程,基础版
  19. kmp算法,小试牛刀
  20. java script 月日年转年月日_如何将这种格式的日期(2010年7月13日星期二00:00:00 CEST)转换为Java日期(字符串来自alfresco属性)...

热门文章

  1. VHDL计算机硬件能直接执行吗,第5章 VHDL程序结构.ppt
  2. at shutdown 不起作用_at胎是什么胎
  3. 多方安全计算、联邦学习、可信计算 对比区别
  4. 区块链 共识机制研究和传统一致性研究的区别
  5. 基于SSM的宠物商城系统
  6. 基于springboot的健身管理系统
  7. 深度神经网络反向传播算法
  8. oracle11整库迁移,Oracle11.2数据库迁移总结
  9. gitlab创建分支上传文件_环境搭建:gitLab平台的搭建和简单使用
  10. php发送sql,php学习笔记(二)php与mysql连接与用php发送SQL查询