Java选择排序

/*
    选择排序与冒泡排序相比,比较次数相同,但交换次数明显减少,说明交换更有效率。
 */
public class 选择排序 {
    public static void main(String[] args) {
//        静态初始化一个int数组
        int[] array = {15,7,3,12,6,9,8};
//        采用选择排序法对其进行排序
        int count1 = 0; //为了统计对比次数,打标记
        int count2 = 0; //为了统计交换次数,打标记
        for (int i = 0; i < array.length-1; i++) {
            //假设首位元素就是最小的
            int min = i;
            for (int j = i + 1; j < array.length; j++) {
//                统计比较次数
                count1++;
                //如果一个元素比假设最小的数还小,就把更小的元素的下标赋值给那个假设的最小元素
                if (array[j] < array[min]){
                    min = j;
                }
            }
            //如果min的值不等于i说明最初的假设不成立,有更小的数,需要交换
            if (min != i){
                int temp = array[min];
                array[min] = array[i];
                array[i] = temp;
//                统计交换次数
                count2++;
            }
        }
        System.out.println("比较次数:" + count1);
        System.out.println("交换次数:" + count2);
//        排序后对数组进行遍历
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
    }
}

你可能感兴趣的:(学习笔记,算法,排序算法,java)