JavaSE入门基础算法之数组排序

针对Java初学者。JavaSE入门基础算法之数组排序。包括冒泡排序和选择排序,以及使用工具类排序。其他排序比如选择排序、希尔排序、快速排序等方法在数据结构与算法部分介绍。

1 选择排序

  使用第一个值依次与后面的值做比较,若比第一个值小,交换位置,一轮结束后,将最小的值排在最前方.再拿第二个值与后面的值依次作比较,直至倒数第二个值完成比较,即完成排序.
  外层循环控制第一个数。内层循环控制第二个数。

for (int i = 0; i < arr.length - 1; i++) {
    //第一个被比较的数
    for (int j = i + 1; j < arr.length; j++) {
        //被比较的数后面的数
        if (arr[i] > arr[j]) {
            arr[i] = arr[i] ^ arr[j];
            arr[j] = arr[i] ^ arr[j];
            arr[i] = arr[i] ^ arr[j];
        }
    }
}
System.out.println(Arrays.toString(arr));

2 冒泡排序

  将前一个数和后一个数进行比较,若前一个比后一个小则交换位置,一轮完成后将最大值排在最前方再开始第二轮,选出第二大的值,排在倒数第二的位置,直至排到顺数第二位置,完成排序。
  外层循环控制循环次数,内层循环控制比较的两个数。

for (int i = 0; i < arr.length - 1; i++) {
    for (int j = 0; j < arr.length - 1 - i; j++) {
        if (arr[j] > arr[j + 1]) {
            arr[j] = arr[j] ^ arr[j + 1];
            arr[j + 1] = arr[j] ^ arr[j + 1];
            arr[j] = arr[j] ^ arr[j + 1];
        }
    }
}
System.out.println(Arrays.toString(arr));

3 使用API方法

使用位于util包的Arrays工具类的sort方法

public static void sort(int[] a)

部分排序:

public static void sort(int[] a,int fromIndex,int toIndex)
参数: a - 要排序的数组 fromIndex - 要排序的第一个元素的索引(包括) toIndex -
要排序的最后一个元素的索引(不包括)

补充
  DualPivotQuicksort是JDK1.7开始的类,采用的双Pivot快速排序算法, 这种算法通常会比传统单Pivot的快排算法效率更高,也是sort底层的算法! 并且针对不同类型的数组,其快速排序的算法也不一样!均封装在DualPivotQuicksort类中,形成重载方法,由sort方法根据传入的数组类型的不同而调用!

发布了58 篇原创文章 · 获赞 105 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43767015/article/details/105154387