sf02_选择排序算法Java Python rust 实现
Java 实现
package common;
public class SimpleArithmetic {
/**
* 选择排序
* 输入整形数组:a[n] 【4、5、3、7】
* 1. 取数组编号为i(i属于[0 , n-2])的数组值 a[i],即第一重循环
* 2. 假定a[i]为数组a[k](k属于[i,n-1])中的最小值a[min],即执行初始化 min =i
* 3. 取数组编号为m(m属于[i+1,n-1])的数组值 a[m],即第二重循环
* 4. 若 a[m] < a[min], 则 min = m ; min 始终记录 a[k]中的最小值
* 5. 当 min != i时,即第二步的假定a[i]为a[k]中的最小值不成立时,需要将a[min]与a[i]的值互换
*
* @param arr 整形数组
*/
public static void selectSort(int[] arr){
int n = arr.length;
int min = 0;
int tmp = 0;
for(int i = 0; i < n-1; i++){
min = i;
for(int m = i + 1; m < n; m++){
if(arr[m]<arr[min]) min =m;
}
if(i != min){
tmp = arr[i];
arr[i] = arr[min];
arr[min] = tmp;
}//end of if
}//end of for
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
int[] arr = {12,23,9,24,15,3,18};
SimpleArithmetic.selectSort(arr);
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i]+" ");
}
//输出 3 9 12 15 18 23 24
}
}
Python 实现
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> class SimpleArithmetic:
def selectSort(self,arr):
v_len = len(arr)
v_index_i = 0
while v_index_i != v_len -1:
i = arr[v_index_i]
v_min = i
for m in arr[v_index_i+1:v_len]:
if m < v_min:
v_min = m
if i != v_min:
v_tmp = arr.index(v_min)
arr[v_index_i] = v_min
arr[v_tmp] = i
v_index_i = v_index_i + 1 >>> sa = SimpleArithmetic()
>>> arr = [12,23,9,24,15,3,18]
>>> sa.selectSort(arr)
>>> arr
[3, 9, 12, 15, 18, 23, 24]
>>>
rust实现
pub fn select_sort_vec(v1: &mut Vec<i32>){
let le = v1.len();
let mut tmp_min_index = 0;
for i in 0..(le-1) {
if let Some(elem) = v1.get(i){
tmp_min_index = i;
for m in (i+1)..le {
if let Some(e) = v1.get(m) {
if let Some(emin) = v1.get(tmp_min_index){
if *e < *emin{
tmp_min_index = m;
}
};
}
}
if i != tmp_min_index {
v1.swap(i,tmp_min_index);
}
}
}
}
pub fn select_sort_vec_test() {
let mut v1 = vec![1, 3, 2,5,11,4,9];
select_sort_vec(&mut v1);
for (i,val) in v1.iter().enumerate() {
println!("last {}:{}",i,val);
}
}
sf02_选择排序算法Java Python rust 实现的更多相关文章
- 选择排序算法Java与Python实现
Java 实现 package common; public class SimpleArithmetic { /** * 选择排序 * 输入整形数组:a[n] [4.5.3.7] * 1. 取数组编 ...
- 排序算法系列:选择排序算法JAVA版(靠谱、清晰、真实、可用、不罗嗦版)
在网上搜索算法的博客,发现一个比较悲剧的现象非常普遍: 原理讲不清,混乱 啰嗦 图和文对不上 不可用,甚至代码还出错 我总结一个清晰不罗嗦版: 原理: 从数组头元素索引i开始,寻找后面最小的值(比i位 ...
- 【排序算法】直接选择排序算法 Java实现
基本思想 直接选择排序是从无序区选一个最小的元素直接放到有序区的最后. 初始状态:无序区为a[1...n],有序区为空. 第一次排序:在无序区a[1...n]中选出最小的记录a[k],将它与有序区的第 ...
- 选择排序算法Java实现
一. 算法描述 选择排序:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1 ...
- 算法学习之选择排序算法的python实现
——参考自<算法图解> def findSmallest(arr): # 假设第一个元素最小 smallest = arr[0] smallest_index = 0 for i in r ...
- 《算法4》2.1 - 选择排序算法(Selection Sort), Python实现
选择排序算法(Selection Sort)是排序算法的一种初级算法.虽然比较简单,但是基础,理解了有助于后面学习更高深算法,勿以勿小而不为. 排序算法的语言描述: 给定一组物体,根据他们的某种可量化 ...
- python选择排序算法总结
选择排序算法: a=[6,5,4,3,2,1] 算法思路: 第一步:在列表的第一个位置存放此队列的最小值 声明一个变量min_index等于列表的第一个坐标值0 从第一个位置0坐标开始,和它后边所有的 ...
- JAVA简单选择排序算法原理及实现
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...
- 排序算法Java代码实现(一)—— 选择排序
以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...
随机推荐
- 南大《软件分析》课程笔记——Data Flow Analysis
南大<软件分析>--Data Flow Analysis @(静态分析) 目录 数据流分析概述 数据流分析应用 Reaching Definitions Analysis(may anal ...
- S2-002漏洞分析
漏洞概述 Struts2-002是一个 XSS 漏洞,该漏洞发生在 <s:url> 和 <s:a>标签中,未对标签内字符进行转义,当标签的属性 includeParams=al ...
- Intellij IDEA 配置Junit
导包: 1.Hamcrest Core 包: https://mvnrepository.com/artifact/org.hamcrest/hamcrest-core/1.3 2.Junit包 ...
- [第三章]c++学习笔记1(this指针)
this指针作用,其作用就是指向成员函数所作用的对象 使用例 为了返回c1,使用this指针,来指向作用的对象 使用空指针调用hello,调用hello欲使其作用在p指向的对象上,然而p没指向任何对象 ...
- 关于 RocketMQ 事务消息的正确打开方式 → 你学废了吗
开心一刻 昨晚和一哥们一起吃夜宵,点了几瓶啤酒 不一会天空下起了小雨,哥们突然道:糟了 我:怎么了 哥们:外面下雨了,我老婆还在等着我去接她 他给了自己一巴掌,说道:真他妈不是个东西 我心想:哥们真是 ...
- 编解码再进化:Ali266 与下一代视频技术
过去的一年见证了人类百年不遇的大事记,也见证了多种视频应用的厚积薄发.而因此所带来的视频数据量的爆发式增长更加加剧了对高效编解码这样的底层硬核技术的急迫需求. 新视频编解码标准 VVC 定稿不久之后, ...
- [atAGC052B]Tree Edges XOR
定义两点的距离$d(x,y)$为$x$到$y$路径上边权异或和,则两棵树相同当且仅当$\forall 1\le i\le n$,$d(1,i)$相同 新建一个节点0,连边$(0,1)$,初始权值为0, ...
- 【CTSC1999】【带权并查集 】月亮之眼
Description 吉儿是一家古董店的老板娘,由于她经营有道,小店开得红红火火.昨天,吉儿无意之中得到了散落民间几百年的珍宝-月亮之眼.吉儿深知"月亮之眼"价值连城:它是由许多 ...
- 【2020五校联考NOIP #8】狗
题面传送门 原题题号:Codeforces 883D 题意: 有 \(n\) 个位置,每个位置上要么有一条狗,要么有一根骨头,要么啥都没有. 现在你要给每个狗指定一个方向(朝左或朝右). 朝左的狗可以 ...
- 洛谷 P5331 - [SNOI2019]通信(CDQ 分治优化建图+费用流)
题面传送门 首先熟悉网络流的同学应该能一眼看出此题的建模方法: 将每个点拆成两个点 \(in_i,out_i\),连一条 \(S\to in_i\),容量为 \(1\) 费用为 \(0\) 的边 连一 ...