分享好友 编程语言首页 频道列表

sf02_选择排序算法Java Python rust 实现

rust文章/教程  2023-02-09 10:300

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);
    }
}

 

查看更多关于【rust文章/教程】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
Rust到底值不值得学--Rust对比、特色和理念
前言其实我一直弄不明白一点,那就是计算机技术的发展,是让这个世界变得简单了,还是变得更复杂了。当然这只是一个玩笑,可别把这个问题当真。然而对于IT从业者来说,这可不是一个玩笑。几乎每一次的技术发展,都让这个生态变得更为复杂。“英年早秃”已经成

0评论2023-03-08818

全栈程序员的新玩具Rust(三)板条箱
上次用到了stdout,这次我们来写一个更复杂一点的游戏rust的标准库叫做std,默认就会引入。这次我们要用到一个随机数函数,而随机数比较尴尬的一点是这玩意不在标准库中,我们要额外依赖一个库。很多编程方案都有自己的模块化库系统,rust也不例外,不过rust

0评论2023-02-10729

【Rust】标准库-Result rust数据库
环境Rust 1.56.1VSCode 1.61.2概念参考:https://doc.rust-lang.org/stable/rust-by-example/std/result.html示例main.rsmod checked {#[derive(Debug)]pub enum MathError {DivisionByZero,NonPositiveLogarithm,NegativeSquareRoot,}pub type MathResult =

0评论2023-02-09978

【Rust】标准库-引用 rust 数据库框架
环境Rust 1.56.1VSCode 1.61.2概念参考:https://doc.rust-lang.org/stable/rust-by-example/std/rc.html示例rust 使用 Rc 来实现引用计数。main.rsuse std::rc::Rc;fn main() {let rc_examples = "Rc examples".to_string();{println!("--- rc_a is created

0评论2023-02-09638

rust 打印当前时间
let now = time::now();let f_now = time::strftime("%Y-%m-%dT%H:%M:%S", now).unwrap();println!("now: {:?}", f_now);

0评论2023-02-09689

【Rust】线程 rust编程语言
环境Rust 1.56.1VSCode 1.61.2概念参考:https://doc.rust-lang.org/stable/rust-by-example/std_misc/threads.html示例main.rsuse std::thread;const N_THREADS: u32 = 10;fn main() {let mut children = vec![];for i in 0..N_THREADS {children.push(threa

0评论2023-02-09956

更多推荐