算法导论2.2-2selection-sort(选择排序)

来源:互联网 发布:淘宝联盟pc客户端 编辑:程序博客网 时间:2024/05/21 07:48

问题描述

考虑对数组中的n个数进行排序的问题,首先找出n个数中的最小元素,并将其与A[1]中的元素进行互换,接着找出A中的次最小元素,与A[2],中的元素进行互换,对A中的头n-1个元素进行这个过程

 public static void main(String[] args) {        int[] s = {3, 2, 4, 5, 7, 6, 1};        sort(s);        print(s);    }    private static void  print(int[] s){        for (int i = 0; i < s.length; i++) {            if(i == 0){                System.out.print("{");            }            System.out.print(s[i]);            if(i < s.length -1){                System.out.print(",");            }            if(i ==  s.length -1){                System.out.print("}\n");            }        }    }    private static int[] sort(int[] s){        for (int j = 0; j < s.length-1; j++) {            int min = s[j];            int po = j;            for (int i = j; i < s.length; i++) {                if(s[i] < min ){                    po = i;                }            }            s[j] = s[po];            s[po] = min;        }        return s;    }

执行过程
- 找到数组中的最小值,与第一个位置互换,1,2,4,5,7,6,3
- 找到s[2…n]中的最小值,与第二个互换位置,1,2,4,5,7,6,3
- 依次类推
- 直到s[n-1,n]排完,只剩一个数无需再排,所以输出数组

注意事项
- 只需排序n-1次即可
- 当找到最小值的时候只需记录下下标即可,减省运行时间
- 最后替换位置,
- min用于记录最小值和初始值

0 0
原创粉丝点击