• 四、直接选择排序


    1、Java语言实现

    抽象类

    public abstract class Sorter {
        public abstract void sort(int [] array);
    }

    实现类

    /**
     * @author BEAN_BAG
     * @date 2018年10月8日 14:41:53
     * 直接选择排序
     */
    public class StraightSelectionSorter extends Sorter {
        @Override
        public void sort(int[] array) {
            int temp;
            //i从第一个元素遍历到倒数第二个元素
            for (int i = 0; i < array.length - 1; i++) {
                int k = i;
                //j从i的下一个元素遍历到最后一个元素
                //此for循环用于找到右侧无序区中最小的元素
                for (int j = i + 1; j < array.length; j++) {
                    if (array[k] > array[j]) {
                        k = j;
                    }
    
                }
                if (k != i) {
                    //交换k和i上面的值
                    temp = array[k];
                    array[k] = array[i];
                    array[i] = temp;
                }
    
            }
    
        }
    }

    测试

    public class Test {
        public static void main(String[] args) {
            int[] arr = {94, 12, 34, 76, 26, 9, 0, 37, 55, 76, 37, 5, 68, 83, 90, 37, 12, 65, 76, 49};
            Sorter sorter = new StraightSelectionSorter();
            sorter.sort(arr);
    
            System.out.println(Arrays.toString(arr));
    
        }
    }

    2、python语言实现

    from abc import ABCMeta, abstractmethod
    
    class Sorter:
        __metaclass__ = ABCMeta
    
        @abstractmethod
        def sort(self, array):
            pass
    
    class StraightSelectionSorter(Sorter):
        def sort(self, array):
            i = 0
            length = len(array)
            while i < length - 1:
                k = i
                j = i
                #该循环可以找到右侧无序区中最小的元素
                while j < length:
                    if array[j] < array[k]:
                        k = j
                    j += 1
                #交换k和i的值
                if k != i:
                    array[k],array[i] = array[i],array[k]
                i += 1
    
    if __name__ == '__main__':
        arr = [5, 4, 2, 1, 3, 0, 6]
        print(arr)
        straightSelectionSorter = StraightSelectionSorter()
        straightSelectionSorter.sort(arr)
        print(arr)
  • 相关阅读:
    [BZOJ2809][Apio2012]dispatching
    [BZOJ4584][Apio2016]赛艇
    [BZOJ3206][Apio2013]道路费用
    [codeforces551E]GukiZ and GukiZiana
    [BZOJ3809]Gty的二逼妹子序列
    [BZOJ3289]Mato的文件管理
    [BZOJ3052][UOJ#58][WC2013]糖果公园
    [SPOJ10707]Count on a tree II
    [BZOJ1086][SCOI2005]王室联邦
    python小知识
  • 原文地址:https://www.cnblogs.com/beanbag/p/9757175.html
Copyright © 2020-2023  润新知