美文网首页
算法系列之-选择排序(一)

算法系列之-选择排序(一)

作者: 情天孽海 | 来源:发表于2017-10-19 14:50 被阅读8次

所谓的选择排序,就是在一堆数中依次选出最小数,
选择排序的主要思想是从数组中取出一个数,和后面的每个数进行比较,
直到比较完所有数,最后得出一个最小数。这个最小数就放在数组的最前面,
那么接下来在剩余的数中重复此操作,知道选出所有的数。排序结束

int[] arr = {8,2,6,3,1,4};

如上所示:第一步以8位参考,后面的数依次和它比较,如果小于8就进行位置交换

  1. 8和2比较 交换位置 2,8,6,3,1,4
  2. 2和6比较位置不变
  3. 2和3比较位置不变
  4. 2和1比较 交换位置 1,8,6,3,2,4
  5. 1和4比较 不变
  6. 8和6比较 交换位置 1,6,8,3,2,4
    ......
    以此类推

给出步骤图

image.png

最后给出代码

 private void selectSort(int[] a) {
        for (int i = 0; i < a.length; i++) {
           
            for (int j = i + 1; j < a.length; j++) {
                if (a[i] > a[j]) {
                    swap(a,j,i);
                }
            }

        }
    }

 private void swap(int[] a, int min, int max) {
        int temp = a[max];
        a[max] = a[min];
        a[min] = temp;
    }

下面给出python实现的优化方案

class SelectSort():

    def selectorSort(self, list):
        count = len(list)
        for i in range(0, count):
            min = i
            for j in range(i + 1, count):
                if list[min] > list[j]:
                   min = j  #为什么不直接交换,要先记录脚标吗,因为赋值比交换位置效率高
            list[i], list[min] = list[min], list[i]
        return list

任何问题请留言

相关文章

网友评论

      本文标题:算法系列之-选择排序(一)

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