当前位置: 首页 > news >正文

排序算法6--选择排序--简单选择排序

简单选择排序

简单选择排序属于选择排序, 选择排序的思想是:每一趟从待排序的记录中选出关键字最小的记录,按顺序放在以排序的记录序列的后面,知道全部排完为止。

 

1.简单选择排序法是每次循环找出最值,循环结束后将最值调整到合适位置,交换的次数少。

 

每次找出当前无序队列中的最小的元素与第一个交换位置,再选择第二小的与第二个交换位置
  原始队列:   3 5 6 2 4 1(最小元素1与3交换)
  第一步:  1 5 6 2 4 3 (当前最小元素2与5交换)
  第二步:  1 2 6 5 4 3 (当前最小元素3与6交换)
  第三步:  1 2 3 5 4 6 (当前最小元素4与5交换)
  第四步:  1 2 3 4 5 6 
  第五步:  1 2 3 4 5 6 
  第六步:  1 2 3 4 5 6

 

 

 

2.时间复杂度

 

  最好情况(正序)不移动

 

  最坏情况(逆序)移动3(n-1)次

 

  平均时间复杂度O(n*n)

 

  空间复杂度O(1)

 

     具体时间复杂度等分析,请参考:http://www.cnblogs.com/zhangxue521/p/6748085.html

 

3.算法特点

 

  ①稳定排序

 

  ②可用于链式存储结构

 

  ③移动记录次数较少,当每一记录占用空间较多时,此方法比直接插入排序快

 

 

java实现:

 

 1 package 平时常用;
 2 
 3 import java.util.Scanner;
 4 
 5 public class _2简单选择排序 {
 6     public static void main(String[] args) {
 7         int a[] = new int[6];
 8          Scanner scanner = new Scanner(System.in);
 9          for (int i = 0; i < a.length; i++) {
10             a[i] = scanner.nextInt();
11         }
12              for (int i = 0; i < a.length; i++) {
13                 int min = i;
14 //                循环找当前队列中的最小的数字,将min标志赋予它
15                 for (int j =i+1; j < a.length; j++) {
16                     if ( a[j]<a[min] ) {
17                         min = j;
18                     }
19                 }
20                 //交换最小值到当前无序队列的最前面
21                     if (min!=i) {
22                         int temp = a[i];
23                         a[i] = a[min];
24                         a[min] = temp;
25                     }
26                 for (int m : a) {
27                     System.out.print(m+" ");
28                 }
29                 System.out.println();
30             }
31     }
32 }

 

 

js实现:

 1 function jiandanSort(a){
 2     var i,j,temp,min;
 3     for (i=0;i<a.length;i++) {
 4         min = i;
 5         //循环找到当前队列的最小值
 6         for (j = i+1;j<a.length;j++) {
 7             if(a[j]<a[min])
 8             min = j;
 9         }
10         //将最小值交换到当前无序队列的最前面
11         if(min!=i){
12             temp = a[i];
13             a[i] = a[min];
14             a[min] = temp;
15         }
16     }
17 }
18 var a = new Array(7,2,6,5,1,4,3);
19 jiandanSort(a);
20 document.write("_6简单选择排序:"+a +"<br />");

 

python实现:

1 def jiandanSort(a):
2     for i in range(0,len(a)):
3         min = a[i]
4         for j in range(i+1,len(a)):
5             if a[j] < min:
6                 min = a[j]    #找到最小值
7         if min != a[i]:
8             min ,a[i] = a[i],min
9     return a

 

转载于:https://www.cnblogs.com/zhangxue521/p/6748189.html

相关文章:

  • KVM安装配置
  • java中Random随机种子使用
  • linux启动顺序
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • Spring Cloud Sleuth使用简介
  • Android学习笔记:Handler初步
  • Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群
  • Google Spanner论文翻译
  • Node.js爬虫抓取数据 -- HTML 实体编码处理办法
  • 牛客网-约数的个数
  • 变量get、set设置
  • 《C语言及程序设计》实践参考——递归函数
  • CSS空白符处理!
  • SQL判断一个数是整数还是小数
  • 第9章 Spring Boot开发者工具
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • co模块的前端实现
  • Cumulo 的 ClojureScript 模块已经成型
  • Java多态
  • leetcode讲解--894. All Possible Full Binary Trees
  • Map集合、散列表、红黑树介绍
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • - 概述 - 《设计模式(极简c++版)》
  • 区块链将重新定义世界
  • 数组的操作
  • 消息队列系列二(IOT中消息队列的应用)
  • python最赚钱的4个方向,你最心动的是哪个?
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • !!Dom4j 学习笔记
  • #微信小程序:微信小程序常见的配置传旨
  • ${ }的特别功能
  • (安卓)跳转应用市场APP详情页的方式
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • ./configure、make、make install 命令
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET 设计模式初探
  • .NET构架之我见
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .NET中的Exception处理(C#)
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [Angular] 笔记 6:ngStyle
  • [BZOJ1060][ZJOI2007]时态同步 树形dp
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [ComfyUI进阶教程] animatediff视频提示词书写要点
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]
  • [Hadoop in China 2011] Hadoop之上 中国移动“大云”系统解析
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE
  • [hdu1561] The more, The Better 【树形DP】