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代码实现(一)—— 选择排序
以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...
随机推荐
- 文件与文件系统的压缩与打包 tar gzip bzip2
1:linux下常见的压缩文件后缀: .gz .zip .bz2 打包后的: .tar.gz .tar.zip .tar.bz2 2:gzip: 压缩:gzip file 解压:gunzip file ...
- 快速排序--洛谷卡TLE后最终我还是选择了三向切割
写在前边 这篇文章呢,我们接着聊一下排序算法,我们之前已经谈到了简单插入排序 和ta的优化版希尔排序,这节我们要接触一个更"高级"的算法了--快速排序. 在做洛谷的时候,遇到了一道 ...
- 【JAVA】编程(3)---王狗蛋先生去取钱,发现余额不足 !?!?
作业要求: 1.写一个名为Account的类模拟账户.该类的属性和方法如下所示: 该类包括的属性: ID,余额balance,年利率; 包含的方法:各属性的set和get方法.取款方法withdraw ...
- vi/vim 常用命令总结
目录 Linux vi/vim编辑 vim键盘图 vim的三种模式 命令模式.输入模式.输出模式 vim使用实例 vi/vim按键说明 第一部分:一般模式可用的光标移动.复制粘贴.搜索替换等 第二部分 ...
- vue + cesium开发(4) 绘制图形
在官方例子中每个图形都是一个entity,官方例子提供了显示正方形.圆形.锥形.图片等多种案例! // 初始花 var viewer = new Cesium.Viewer("cesiumC ...
- SQL Server学习之路:建立数据库、建立表
1.前言 配置是win10+SQL Server 2012,使用的GUI管理工具是SQL Server 2012自带的SQL Server Management Studio(以下简称SSMS).本系 ...
- [cf674E]Bear and Destroying Subtrees
令$f_{i,j}$表示以$i$为根的子树中,深度小于等于$j$的概率,那么$ans_{i}=\sum_{j=1}^{dep}(f_{i,j}-f_{i,j-1})j$ 大约来估计一下$f_{i,j} ...
- Flink 实践教程-入门(8): 简单 ETL 作业
作者:腾讯云流计算 Oceanus 团队 流计算 Oceanus 简介 流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的具备一站开发.无缝连接.亚 ...
- Qt Creator 源码学习笔记03,大型项目如何管理工程
阅读本文大概需要 6 分钟 一个项目随着功能开发越来越多,项目必然越来越大,工程管理成本也越来越高,后期维护成本更高.如何更好的组织管理工程,是非常重要的 今天我们来学习下 Qt Creator 是如 ...
- 难道你还不知道Spring之事务的回滚和提交的原理吗,这篇文章带你走进源码级别的解读。
上一篇文章讲解了获取事务,并通过获取的connection设置只读,隔离级别等:这篇文章讲事务剩下的回滚和提交. 事务的回滚处理 之前已经完成了目标方法运行前的事务准备工作.而这些准备工作的最大目的无 ...