SelectionSort,选择排序,C++实现
1 // g++ selection_sort.cc -Wall -O3 -std=c++11 && ./a.exe
2
3
4 #include <iostream>
5 #include <vector>
6
7
8 static void swap(int &a, int &b) {
9 int temp = a;
10 a = b;
11 b = temp;
12 }
13
14 static size_t GetIndexOfMin(std::vector<int> &arr, size_t begin) {
15 size_t indexOfMin = begin;
16 for (size_t i = begin + 1; i < arr.size(); ++i) {
17 if (arr[i] < arr[indexOfMin]) {
18 indexOfMin = i;
19 } // else nothing
20 }
21
22 return indexOfMin;
23 }
24
25 static void SelectionSort(std::vector<int> &arr) {
26 for (size_t i = 0; i < arr.size(); ++i) {
27 size_t indexOfMin = GetIndexOfMin(arr, i);
28 if (i != indexOfMin) {
29 (void)swap(arr[i], arr[indexOfMin]);
30 } // else no need to swap
31 }
32 }
33
34 int main(int argc, char const *argv[]) {
35 std::vector<int> v {
36 6, 8, 9, 8, 7, 6, 5, 2, 0, -1
37 };
38
39 (void)SelectionSort(v);
40 for (int i: v) {
41 std::cout << i << "\t";
42 }
43 std::cout << "\n";
44
45 return 0;
46 }
SelectionSort,选择排序,C++实现的更多相关文章
- 排序--SelectionSort 选择排序
选择排序 no implementation 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的元素中中选出最小(或最大)的一个元素,存放在序列的起始位置 ...
- SelectionSort,选择排序
/**算法:选择排序1,从当前未排序的正数中找一个最小的整数,将它放在已排序的整数列表的最后2.要点:选择排序选最小的,往左边选*/ #include <stdio.h>void Sele ...
- Java排序算法之选择排序
一.算法原理 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据}:第1趟排序,在待排序数据arr[1]~arr[n-1]中选出最小的数据,将它与arrr[0]交换:第2趟,在待排序 ...
- 几种排序方式的java实现(01:插入排序,冒泡排序,选择排序,快速排序)
以下为集中排序的java代码实现(部分是在引用别人代码): 插入排序(InsertSort): //代码原理 public static void iSort(int[] a){ for(int i ...
- 【排序基础】1、选择排序法 - Selection Sort
文章目录 选择排序法 - Selection Sort 为什么要学习O(n^2)的排序算法? 选择排序算法思想 操作:选择排序代码实现 选择排序法 - Selection Sort 简单记录-bobo ...
- Java中的经典算法之选择排序(SelectionSort)
Java中的经典算法之选择排序(SelectionSort) 神话丿小王子的博客主页 a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟 ...
- 选择排序SelectionSort
转自https://www.cnblogs.com/shen-hua/p/5424059.html a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕. ...
- 选择排序(SelectionSort)
http://blog.csdn.net/magicharvey/article/details/10274765 算法描述 选择排序是一种不稳定排序.选择排序每次交换一对元素,它们当中至少有一个将被 ...
- Java基础知识强化53:经典排序之选择排序(SelectionSort)
1.选择排序的原理图: 2. 选择排序代码实现: package cn.itcast_02; /* * 数组排序之选择排序: * 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在 ...
- 排序算法总结------选择排序 ---javascript描述
每当面试时避不可少谈论的话题是排序算法,上次面试时被问到写排序算法,然后脑袋一懵不会写,狠狠的被面试官鄙视了一番,问我是不是第一次参加面试,怎么可以连排序算法都不会呢?不过当时确实是第一次去面试,以此 ...
随机推荐
- 脚本执行sudo命令时: 免手动确认和免输入密码
1.sudo 命令有时候需要手动输入yes来确认执行 或者 软件在安装包下载完毕后还需要你输入y进行确认安装 .那如果是用脚本执行sudo 命令就可以用-y 参数来确认执行 sudo yum inst ...
- CUDA Arch 代码
- python requests 内置请求模块
- 【Quartus系列】实验一: 3-8译码器(原理图输⼊设计)
实验一: 3-8译码器(原理图输⼊设计) ⼀:实验⽬的 1. 了解3-8译码器的电路原理,掌握组合逻辑电路的设计⽅法 2. 掌握QuartusII软件原理图输⼊设计的流程 ⼆:实验内容 2.1设计输⼊ ...
- 使用 p7zip 加密解密
1. 安装 yum install p7zip p7zip-plugins 2. 加密打包 7z a -ptest test.7z test.php -p 密码 test.php 可以是目录 或者 多 ...
- Dynamics 365 CRM 弹窗 打开自定义页面 Xrm.Navigation.navigateTo Open Web Resource
在CRM中经常需要打开自定义的HTML界面,而且打开这个界面的时候需要模态窗体,阻止用户填写除了弹窗之外的东西,只能先填写窗体的内容: 这个时候很多人喜欢选择第三方的library去实现模态窗体,但是 ...
- webpack从零开始打造react项目(更新中...)
创建项目 创建文件夹 webpack-test 使用编辑器打开文件夹,我们初始化管理包 npm init -y 生成一个默认的 pageage.json 文件 要想创建react项目,思考我们之前使 ...
- python实现自动打卡
自己也百度了一下,然后写的,分为了三个部分,见三段代码 代码:主程序代码 import timefrom selenium import webdriverfrom private_info impo ...
- Java-对象 认识对象
1.对象同时具有属性和方法两个特性.对象的属性和方法通常被封装在一起,共同体现事物特性,两者相辅相成,不可分割
- msvc去除控制台窗口的编译指令
#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")