一、选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

二、程序实现

1.先是根据自己的思路写了下面的程序,后来发现和网上好多例子都不一样,元素交换的次数太多,很多是无意义的交换,还是把程序放在这儿做个参考,应该算是个不标准的选择排序。

#include<iostream>
using namespace std; const int BUFFSIZE = 6;
void Selection_Sort(int Arr[]); int main()
{
int Arr[BUFFSIZE] = { 5,4,89,10,7,100}; //待排序元素
Selection_Sort(Arr);
return 0;
} // 选择排序
void Selection_Sort(int Arr[])
{
for (int i = 0; i < BUFFSIZE - 1; i++)
{
for (int j = i + 1; j < BUFFSIZE; j++)
{
if (Arr[i] < Arr[j]) // 将大的元素移到前面
{
int tmp = Arr[i];
Arr[i] = Arr[j];
Arr[j] = tmp;
}
}
}
//输出排序后的元素
for (int i = 0; i < BUFFSIZE; i++)
{
cout << Arr[i] << " ";
}
cout << endl;
}
  1. 这个应该是比较标准的选择排序算法,每一轮排序先是记住没排序的元素中最大的元素的索引,然后把它交换到前面来。
#include<iostream>
using namespace std; const int BUFFSIZE = 6;
void Selection_Sort(int Arr[]); int main()
{
int Arr[BUFFSIZE] = { 5,4,89,10,7,100}; //待排序元素
Selection_Sort(Arr); return 0;
} // 选择排序,从大到小排序
void Selection_Sort(int Arr[])
{
for (int i = 0; i < BUFFSIZE-1 ; i++)
{
int index = i;
for (int j = i + 1; j < BUFFSIZE; j++)
{
if (Arr[index] < Arr[j])
{
index = j; //记录待排序元素中最大值的索引
}
}
if (i != index) // 将最大值移到前面
{
int tmp = Arr[i];
Arr[i] = Arr[index];
Arr[index] = tmp;
}
}
//输出排序后的元素
for (int i = 0; i < BUFFSIZE; i++)
{
cout << Arr[i] << " ";
}
cout << endl;
}

选择排序的C、C++实现的更多相关文章

  1. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  2. Html5 简单选择排序演示

    简单选择排序,是选择排序算法的一种.基本思想:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止.由于在每次循环中,会对数值相等的元素改变位置,所以属于非稳定 ...

  3. 排序算法总结------选择排序 ---javascript描述

    每当面试时避不可少谈论的话题是排序算法,上次面试时被问到写排序算法,然后脑袋一懵不会写,狠狠的被面试官鄙视了一番,问我是不是第一次参加面试,怎么可以连排序算法都不会呢?不过当时确实是第一次去面试,以此 ...

  4. JavaScript算法(冒泡排序、选择排序与插入排序)

    冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ...

  5. 基本排序算法——选择排序java实现

    选择排序与冒泡排序有很大的相同点,都是一次遍历结束后能确定一个元素的最终位置,其主要思路是,一次遍历选取最小的元素与第一个元素交换,从而使得一个个元素有序,而后选择第二小的元素与第二个元素交换,知道, ...

  6. java基础算法之选择排序

    选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. ...

  7. 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现

    之前用 JavaScript 写过 快速排序 和 归并排序,本文聊聊四个基础排序算法.(本文默认排序结果都是从小到大) 冒泡排序 冒泡排序每次循环结束会将最大的元素 "冒泡" 到最 ...

  8. CPrimerPlus第十一章中的“选择排序算法”学习

    C Primer Plus第十一章字符串排序程序11.25中,涉及到“选择排序算法”,这也是找工作笔试或面试可能会遇到的题目,下面谈谈自己的理解. 举个例子:对数组num[5]={3,5,2,1,4} ...

  9. SelectionSort,选择排序

    /**算法:选择排序1,从当前未排序的正数中找一个最小的整数,将它放在已排序的整数列表的最后2.要点:选择排序选最小的,往左边选*/ #include <stdio.h>void Sele ...

  10. [PHP]基本排序(冒泡排序、快速排序、选择排序、插入排序、二分法排序)

    冒泡排序: function bubbleSort($array){ $len=count($array); //该层循环控制 需要冒泡的轮数 for($i=1;$i<$len;$i++){ / ...

随机推荐

  1. single number和变体

    给array of integers. 裡面有一个数字是单独出现  其他都会出现两次(而且一起出现)ex: [1,2,2,3,3]要判断哪个数字是单独出现的. 以这个例子的话就是 1 LZ 一开始先说 ...

  2. 由于没有公钥,无法验证下列签名: NO_PUBKEY 54422A4B98AB5139

    gpg --keyserver pgpkeys.mit.edu --recv-key 54422A4B98AB5139 gpg -a --export 54422A4B98AB5139 | sudo ...

  3. scapy学习笔记(4)简单的sniffing 嗅探

    转载请注明:@小五义:http://www.cnblogs/xiaowuyi 利用sniff命令进行简单的嗅探,可以抓到一些简单的包.当不指定接口时,将对每一个接口进行嗅探,当指定接口时,仅对该接口进 ...

  4. Android 连续按两次back键退出系统

    需求:在程序的首页,连续按两次back键退出Androd程序. 第一步:新建一个GApplication类继承Application,在GApplication中添加一个用于存放Activity的集合 ...

  5. Python中 __init__的通俗解释?附修饰器contextmanager的理解

    作者:匿名用户链接:https://www.zhihu.com/question/46973549/answer/103805810来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  6. 20155308《网络攻防》 Exp1 PC平台逆向破解(5)M

    20155308<网络攻防> Exp1 PC平台逆向破解(5)M 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是 ...

  7. 《网络对抗》Exp4 恶意代码分析

    20155336<网络对抗>Exp4 恶意代码分析 问题回答 实验后回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监 ...

  8. WPF编程 ,TextBlock 显示百分数值的一种简单方法。

    原文:WPF编程 ,TextBlock 显示百分数值的一种简单方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/ ...

  9. Android开发——进程间通信之Messenger

    0.  前言 不论是Android还是其他操作系统,都会有自己的IPC机制,所谓IPC(Inter-Process Communication)即进程间通信.首先线程和进程是很不同的概念,线程是CPU ...

  10. vue.js 2.0实现的简单分页

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...