美文网首页
选择排序

选择排序

作者: 编程的猫 | 来源:发表于2021-03-30 14:35 被阅读0次

    算法思想

    (升序 )每次遍历 记录 下 最小值 的 下标,与 当前 待排序 的 元素 交换位置 ,知道 最后 一个 元素

    java代码 实现

    public class SelectedSort {
    
        /**
         * 选择排序的思想:
         * 每次遍历标记最小值的下标,与待排序的第一个元素交换位置,直到最后一个元素
         *
         * @param array 数组
         */
        public static void sort(int[] array) {
            boolean change;
            for (int i = 0; i < array.length - 1; ++i) {
                int currentMin = i;
                change = false;
                for (int j = i + 1; j < array.length; ++j) {
    
                    if (array[currentMin] > array[j]) {
                        currentMin = j;
                        change = true;
                    }
                }
                if (change) swap(array, i, currentMin);
    
            }
        }
    
        /**
         * 交换数组的两个元素
         *
         * @param array 数组
         * @param first 待排序的第一个元素下标
         * @param min   当前循环的最小元素下标
         */
        private static void swap(int[] array, int first, int min) {
            if (array != null && array.length > 1) {
                int tmp = array[first];
                array[first] = array[min];
                array[min] = tmp;
            }
        }
    }
    

    C++代码实现

    //选择排序思想:每次遍历出最小元素并记录下其下标,与待排序元素交换位置,直到最后一个元素
    void selectedSort(int array[], int len) {
        bool changed;
        for (int i = 0; i < len - 1; ++i) {
            int min = i;
            changed = false;
            for (int j = i + 1; j < len; ++j) {
                if (array[min] > array[j]) {
                    min = j;
                    changed = true;
                }
            }
            if (changed)//交换元素位置
                std::swap(array[min], array[i]);
        }
    }
    

    相关文章

      网友评论

          本文标题:选择排序

          本文链接:https://www.haomeiwen.com/subject/ygqghltx.html