美文网首页
Java 实现冒泡排序

Java 实现冒泡排序

作者: 又语 | 来源:发表于2020-04-12 18:01 被阅读0次

    本文介绍冒泡排序原理及 Java 语言实现。


    目录

    • 冒泡排序原理
    • 代码实现

    冒泡排序原理

    1. 比较相邻的元素,升序时如果第一个比第二个大,就实现交换,降序时如果第一个比第二个小,就实现交换;
    2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对;
    3. 针对所有的元素重复以上的步骤,除了最后一个;
    4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    代码实现

    package tutorial.java.util;
    
    public class BubbleSortUtils {
    
        public static <T extends Comparable> T[] sort(T[] array, SortType sortType) {
            T temp;
            int comparableValue = sortType == SortType.ASC ? 1 : -1;
            for (int i = 0; i < array.length - 1; i++) {
                for (int j = 0; j < array.length - 1 - i; j++) {
                    if (array[j].compareTo(array[j + 1]) == comparableValue) {
                        temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                    }
                }
            }
            return array;
        }
    
        public static enum SortType {
            ASC, DESC;
        }
    }
    

    单元测试:

    package tutorial.java.util;
    
    import org.apache.commons.lang3.StringUtils;
    import org.junit.Assert;
    import org.junit.Test;
    
    public class BubbleSortUtilsTest {
    
        @Test
        public void test() {
            Integer[] data = {10, 5, 1, 20, 3, 8};
            Integer[] asc = BubbleSortUtils.sort(data, BubbleSortUtils.SortType.ASC);
            Assert.assertEquals("1,3,5,8,10,20", StringUtils.join(asc, ","));
            Integer[] desc = BubbleSortUtils.sort(data, BubbleSortUtils.SortType.DESC);
            Assert.assertEquals("20,10,8,5,3,1", StringUtils.join(desc, ","));
        }
    }
    

    相关文章

      网友评论

          本文标题:Java 实现冒泡排序

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