选择排序—简单选择排序(Simple Selection Sort)
基本思想:
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。
简单选择排序的示例:
操作方法:
第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;
第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录与第二个记录交换;
以此类推.....
第i 趟,则从第i 个记录开始的n-i+1 个记录中选出关键码最小的记录与第i 个记录交换,
直到整个序列按关键码有序。
算法实现:
void print(int a[], int n ,int i){cout<<"第"<<i+1 <<"趟 : ";for(int j= 0; j<8; j++){cout<<a[j] <<" ";}cout<<endl;
}
/*** 数组的最小值** @return int 数组的键值*/
int SelectMinKey(int a[], int n, int i)
{int k = i;for(int j=i+1 ;j< n; ++j) {if(a[k] > a[j]) k = j;}return k;
}/*** 选择排序**/
void selectSort(int a[], int n){int key, tmp;for(int i = 0; i< n; ++i) {key = SelectMinKey(a, n,i); //选择最小的元素 递归if(key != i){tmp = a[i]; a[i] = a[key]; a[key] = tmp; //最小元素与第i位置元素互换}print(a, n , i);}
}
int main(){int a[8] = {3,1,5,7,2,4,9,6};cout<<"初始值:";for(int j= 0; j<8; j++){cout<<a[j] <<" ";}cout<<endl<<endl;selectSort(a, 8);print(a,8,8);
}
简单选择排序的改进——二元选择排序
简单选择排序,每趟循环只能确定一个元素排序后的定位。我们可以考虑改进为每趟循环确定两个元素(当前趟最大和最小记录)的位置,从而减少排序所需的循环次数。改进后对n个数据进行排序,最多只需进行[n/2]趟循环即可。具体实现如下
void SelectSort(int r[],int n) {
02. int i ,j , min ,max, tmp;
03. for (i=1 ;i <= n/2;i++) {
04. // 做不超过n/2趟选择排序
05. min = i; max = i ; //分别记录最大和最小关键字记录位置
06. for (j= i+1; j<= n-i; j++) {
07. if (r[j] > r[max]) {
08. max = j ; continue ; //continue不可少,否则可能会漏掉一些数据,min的值偏大
09. }
10. if (r[j]< r[min]) {
11. min = j ;
12. }
13. }
14. //该交换操作还可分情况讨论以提高效率
15. tmp = r[i-1]; r[i-1] = r[min]; r[min] = tmp;
16. tmp = r[n-i]; r[n-i] = r[max]; r[max] = tmp;
17.
18. }
19.}
选择排序—简单选择排序(Simple Selection Sort)相关推荐
- [转载] python选择排序二元选择_选择排序:简单选择排序(Simple Selection Sort)
参考链接: Python中选择排序Selection Sort 基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的 ...
- c语言用sort函数选择排序,简单选择排序(Simple Selection Sort)的C语言实现
简单选择排序(Simple Selection Sort)的核心思想是每次选择无序序列最小的数放在有序序列最后 演示实例: C语言实现(编译器Dev-c++5.4.0,源代码后缀.cpp) 原创文章, ...
- 经典排序算法(一) —— Selection Sort 选择排序
经典排序算法(一) -- Selection Sort 选择排序 文章目录 经典排序算法(一) -- Selection Sort 选择排序 简介 排序过程 实现 复杂度 简介 选择排序是一种简单直观 ...
- C语言实现选择排序——简单选择排序算法
C语言实现简单选择排序 文章目录 C语言实现简单选择排序 简单选择排序算法 1.交换操作 2.简单选择排序算法实现 项目完整代码 运行效果图 简单选择排序算法 1.交换操作 //交换实现 void s ...
- 简单选择排序(Simple Selection Sort)
介绍: 简单选择排序的工作方式突出"选择"二字,每次从待排序数据中选择符合条件的元素放在已排序元素末尾.对于少量元素的排序,简单选择排序是一个有效的算法. 思想: 第一次从待排序的 ...
- 七种排序------简单选择排序(Simple Selection Sort)
简单选择排序法就是通过 n - i 次关键字间的比较,从 n - i + 1个记录中选出关键字最小的记录,并和第 i 个记录交换. 代码如下: void SelectSort(SqList *L) { ...
- 20180321选择排序-简单选择排序
2019独角兽企业重金招聘Python工程师标准>>> 前置知识 selection sort 选择排序的基本思想:从待排序的序列中选出最大值(最小值),交换该元素与待排序序列头部元 ...
- C++实现各种选择排序(简单选择排序,堆排序)
简单选择排序: 代码如下: #include <iostream> using namespace std;void SelectSort(int *a, int len) {//数组下标 ...
- 选择排序-简单选择排序
简单选择排序是一种不稳定的选择排序. #include<stdio.h> void selectSeletSort(int a[],int n) { int i,j,k; ...
最新文章
- UA OPTI570 量子力学22 2-D Isotropic Q.H.O.简介
- python中统计计数的几种方法
- Linux+.NetCore+Nginx搭建集群
- 分享一套非常不错的bootstarp3.0.2响应式模板
- 作者:朱扬勇,复旦大学计算机科学技术学院教授、学术委员会主任,上海市数据科学重点实验室主任。...
- java 文件中查找指定的单词,查找指定文本文件中的单词数的Java程序
- 第二阶段冲刺第六天站立会议
- Silvaco 学习笔记——物理模型:载流子产生复合模型
- secureCRT 7.3.6 winxp版本
- Nginx报错:nginx: [error] invalid PID number in /run/nginx.pid的解决方案
- Right-BICEP测试四则运算2
- CSS calc() 使用指南
- Mac Catalina系统关闭/打开开机duang音效
- excel怎么按照年月日时分秒的格式以每隔一个小时进行填充序列
- QTextEdit 控件的妙用(以及与QPlainTextEdit的区别)
- linux php7.4,PHP 7.4登陆Ubuntu 20.04 LTS
- linux下jdk的安装与配置jdk-6u45-linux-i586.bin
- QT_地图导航 源码下载
- 第一篇 厚黑学 一、绪论
- No package ‘vips‘ found系列问题解决方案
热门文章
- [C++]Call virtual member function in constructor or destructor
- Flash与数学:球体曲面 (2)
- 满有趣的屏幕快捷键;)
- 转 Java的各种打包方式(JAR/WAR/EAR/CAR)
- 【Android】RxJava的使用(一)基本用法
- 《告别失控:软件开发团队管理必读》一一第1章 程序员为何难以管理
- 避免每个类中都初始化日志类
- #pragma execution_character_set的意义
- 通过rsync实现数据备份
- Nexus如何上传自己的jar包 (upload artifactory)