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

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]
>>> 
原文地址:https://www.cnblogs.com/perfei/p/4898345.html