算法图解之选择排序
| 假设你的计算机存储了很多乐趣。对于每个乐队,你都记录了其作品被播放的次数。 
 如果你要将这个列表按播放次数从多到少的顺序排列,从而将你喜欢的乐队排序。该如何做呢? 我第一眼看到这个问题时,想到的是通过sql解决这个问题 不过我觉得sql反而麻烦,于是转用冒泡排序。代码示例如下: package cn.pratice.simple;
public class BubbleSort {
    
    static void main(String[] args) {
    
        int [] arr = {156,141,1)">35,1)">94,1)">88,1)">61,1)">111};
        
        System.out.println("排序前数组为:");
        for (int i = 0; i < arr.length; i++) {
            System.arr:"+arr[i]);
        }
        
        0; i < arr.length-1; i++) { //外层循环控制排序趟数
                int j = 0; j < arr.length-1-i; j++) {内层循环控制每一趟排序多少次
                    if(arr[j]>arr[j+1]) {
                        int temp = arr[j];
                        arr[j] = arr[j+];
                        arr[j+1]=temp;
                    }
                    
                }
            
        }
        System.排序后的数组为:arr[i]);
        }
    }
}这段代码的输出结果是: 
 但是该结果输出的是从小到大,显然不符合我的期望。 package cn.pratice.simple;
import java.util.Arrays;
};
        
        arr[i]);
        }
        Arrays.sort(arr);
        
        arr[i]);
        }
        
    }
}回到正题,那么我们如何将其变为降序?实现代码如下(还是复用现有的轮子) package cn.pratice.simple;
import java.util.Comparator;
 BubbleSort {
     main(String[] args) {
        Integer[] array = new Integer[] {  };
        java.util.Arrays.sort(array,new Comparator<Integer>() {
            int compare(Integer o1,Integer o2) {
                return o2 - o1;
            }
        });
        0; i < array.length; i++) {
            Integer integer = array[i];
            System.integer:" + integer);
        }
    }
}我们再来看看选择排序的例子: long startTime = System.currentTimeMillis();    获取开始时间
        int[] arr = new int[] { };
        System.交换前0; i < arr.length - 1; i++) {
            int k = i;
            int j = k + 1; j < arr.length; j++) {
                if(arr[j] < arr[k]) {
                    k = j;
                }
            }
            if(i!=k) {
                 arr[i];
                arr[i] = arr[k];
                arr[k] = temp;
            }
        }
        
        System.交换后:arr[i]);
        }
        
        
        
        long endTime = System.currentTimeMillis();    获取结束时间
        System.程序运行时间:" + (endTime - startTime) + ms");    输出程序运行时间
    }
}那么选择排序的原理又是什么呢? 最后比较一下冒泡排序和简单排序的区别(从概念上分析): 选择排序 (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 



