介绍了Java数组的冒泡排序和选择排序的实现。
更多详尽的排序算法:10种常见排序算法原理详解以及Java代码的完全实现
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方法根据传入的数组类型的不同而调用!
更多详尽的排序算法:10种常见排序算法原理详解以及Java代码的完全实现
如有需要交流,或者文章有误,请直接留言。另外希望点赞、收藏、关注,我将不间断更新各种Java学习博客!