选择排序

选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

选择排序原理

  1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
  2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
  3. 重复第二步,直到所有元素均排序完毕。

动画演示

需要注意的是,选择排序时间复杂度O(n^2),应避免使用这种方式进行排序。

参考实现 

Python  实现

def selectSort(arr):
    '''
    选择排序
    :param arr: 待排数组
    :return: 有序数组
    '''
    for i in range(len(arr) - 1):

        smail_index = i  # 假设第一个元素最小
        for j in range(i + 1, len(arr)):
            if arr[j] < arr[smail_index]:
                # 如果之前假设不成立,将 j 赋值给 smail_index
                smail_index = j
        # 交换位置         
        arr[i], arr[smail_index] = arr[smail_index], arr[i]


nums = [1, 4, 5, 8]
selectSort(nums)
print(nums)

Java 实现

    /**
     * 选择排序
     *
     * @param arr
     */
    public static void selectSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            //假设第一个最小
            int minIndex = i;
            int min = arr[i];
            for (int j = i + 1; j < arr.length; j++) {
                //刚才假设不成立
                if (min > arr[j]) {
                    min = arr[j];
                    minIndex = j;
                }
            }
            //交换位置
            if (minIndex != i) {
                arr[minIndex] = arr[i];
                arr[i] = min;
            }
        }
    }

 

posted @ 2023-05-23 07:06  晓枫的春天  阅读(7)  评论(0编辑  收藏  举报