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描述
每当面试时避不可少谈论的话题是排序算法,上次面试时被问到写排序算法,然后脑袋一懵不会写,狠狠的被面试官鄙视了一番,问我是不是第一次参加面试,怎么可以连排序算法都不会呢?不过当时确实是第一次去面试,以此 ...
随机推荐
- uniapp记录
1.uniapp获取imei imsi 型号 厂商 https://blog.csdn.net/qq_35620498/article/details/112172115
- 富文本 HTML String 转化为 nodes 数组
https://github.com/ant-mini-program/mini-html-parser?spm=ding_open_doc.document.0.0.4ef9722fXz27PV
- mysql慢sql监控
1.思路 之前用 mysql 一直没有考虑到这点,mysql 慢 sql 监控是很重要的,它能帮我们梳理我们的业务 sql 到底是哪里处了问题,那么慢 sql 监控怎么做呢? 有两种思路来实现: 在应 ...
- Android移动端性能测试工具mobileperf
简介:mobileperf是阿里开源的一个python PC 工具,可以收集Android性能数据: cpu.内存.流畅度.fps.logcat日志.流量.进程线程数.进程启动日志,mobileper ...
- 【小记】copy 与 copy_backward
copy 与 copy_backward copy 从前往后复制,result 参数指向目标容器的 begin 位置 copy*backward 从后往前复制,··· end 位置 Possible ...
- Skywalking安装
https://www.cnblogs.com/duanxz/p/15602842.html
- 获取异步请求的结果 | JS | VUEX | axios
这里都是获取异步axios的请求结果 一.async/await的方式(获取一个vuex中的异步请求的结果) 1.在vuex(store中的index.js)中定义异步函数 1> 在mutati ...
- antd timePicker组件限制当前之前的时间不可选择
import React from 'react'; import ReactDOM from 'react-dom'; import {Input,DatePicker,Form,Col,Butto ...
- codeforces思维题
1.Slime Escape 次数:0 2.Meeting on the Line 题解 次数:0 3.Ugu 自己完成了线段树解法,另一种解法未完成
- Android studio学习第二期
layout目录下app页面布局文件 activity_main.xml的创建和跳转 activity为一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务 创建步骤 这里选择第二个xml ...