冒泡排序
冒泡排序(Bubble Sort)可以称的上是最为经典的排序算法。它的思路比较简单,即从后向前,逐个比较相邻的两项,寻找最优值(最大或最小),使得该值始终向着我们所需要的方向前进,直到最优值达到它的目的地为止。(为方便起见,我这里统一都讨论顺序排序——从小到大排序,即每一轮都寻找最小的元素放在队列的前端位置。)第一轮比较即获得最小的元素放在队列的第一个位置,第二轮比较获得除最小元素外的所剩余的元素的最小值(即次小者)放在队列的第二个位置,以此类推。
下面给出Java代码
package sort.bubble; public class BubbleSort { / * @param args */ public static void main(String[] args) { //设置元素个数 int count = 0; //获得随机可重复元素组 //int[] data = createData(count); //随机不可重复元素组 int[] data = createNoRepeatData(count); for (int i = 0; i < data.length; i++) { System.out.print(data[i] + " "); } //冒泡排序 bubbleSort(data); System.out.println("\r\n" + "================="); for (int i = 0; i < data.length; i++) { System.out.print(data[i] + " "); } } / * 冒泡算法 * @param data * @return */ private static void bubbleSort(int[] data) { if (null == data || data.length <= 1) { return; } for (int i = 0; i < data.length; i++) { //从后向前,相邻两项进行比较 for (int j = data.length-1; j > i; j--) { if(data[j-1]>data[j]){ swap(data,j-1,j); } } } } / * 数组内 i 坐标元素与 j 坐标元素互换 * @param data * @param i * @param j */ private static void swap(int[] data, int i, int j) { int temp = data[i]; data[i] = data[j]; data[j] = temp; } / * 获得随机不可重复数组 * @param data * @param count * @return */ private static int[] createNoRepeatData(int count) { int[] data = new int[count]; int randomNum = 0; boolean isExist = false; for (int i = 0; i < data.length; i++) { while (true) { randomNum = (int) Math.round(Math.random()*count); isExist = false; for (int j = 0; j < i; j++) { if (data[j] == randomNum) { isExist = true; break; } } if (!isExist) { data[i] = randomNum; break; } } } return data; } / * 获得随机可重复数组 * @param data * @param count * @return */ private static int[] createData(int count) { int[] data = new int[count]; for (int i = 0; i < data.length; i++) { data[i] = (int) Math.round(Math.random()*count); } return data; } }
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/62390.html