本文实例讲述了Java数组常用排序算法。分享给大家供大家参考,具体如下:
1、冒泡排序法
SortArray_01.java
public class SortArray_01 { public static void main(String args[]) { int[] array = { 14, 5, 86, 4, 12, 3, 21, 13, 11, 2, 55, 66, 22 }; // 创建一个初始化的一维数组array System.out.println("未排序的数组:"); for (int i = 0; i < array.length; i++) { // 遍历array数组中的元素 System.out.print(" " + array[i]); // 输出数组元素 if ((i + 1) % 5 == 0) // 每5个元素一行 System.out.println(); } int mid; // 定义一个中间变量,起到临时存储数据的作用 for (int i = 0; i < array.length; i++) { // 执行冒泡排序法 for (int j = i; j < array.length; j++) { if (array[j] < array[i]) { mid = array[i]; array[i] = array[j]; array[j] = mid; } } } System.out.println("\n使用冒泡法排序后的数组:"); for (int i = 0; i < array.length; i++) { // 遍历排好序的array数组中的元素 System.out.print(" " + array[i]); // 输出数组元素 if ((i + 1) % 5 == 0) System.out.println(); // 每5个元素一行 } } }
运行结果:
未排序的数组: 14 5 86 4 12 3 21 13 11 2 55 66 22 使用冒泡法排序后的数组: 2 3 4 5 11 12 13 14 21 22 55 66 86
2、数组递增排序
SortArray_02.java
import java.util.Arrays; import java.util.Random; public class SortArray_02 { public static void main(String[] args) { Random rd = new Random(); int[] array = new int[15]; // 声明数组 System.out.println("没有使用sort方法前的数组:"); for (int i = 0; i < array.length; i++) { // 利用随机数随意产生15个0~20之间的随机数 array[i] = rd.nextInt(20); // 给array数组赋值 System.out.print(" " + array[i]); if ((i + 1) % 5 == 0) System.out.println(); } Arrays.sort(array); // 对array数组进行升序排序 System.out.println("\n使用sort方法后的数组:"); for (int i = 0; i < array.length; i++) { // 将array数组中的数据输出 System.out.print(" " + array[i]); if ((i + 1) % 5 == 0) System.out.println(); } } }
运行结果:
没有使用sort方法前的数组: 13 12 11 18 11 11 17 13 11 8 1 0 9 18 3 使用sort方法后的数组: 0 1 3 8 9 11 11 11 11 12 13 13 17 18 18
3、快速排序法
SortArray_03.java
public class SortArray_03 { public static void main(String args[]) { int[] intArray = { 12, 11, 45, 6, 8, 43, 40, 57, 3, 20, 15, 88, 23 }; System.out.println("排序前的数组:"); for (int i = 0; i < intArray.length; i++) { System.out.print(" " + intArray[i]); // 输出数组元素 if ((i + 1) % 5 == 0) // 每5个元素一行 System.out.println(); } System.out.println(); int[] b = quickSort(intArray, 0, intArray.length - 1); // 调用quickSort System.out.println("使用快迅排序法后的数组:"); for (int i = 0; i < b.length; i++) { System.out.print(" " + b[i]); if ((i + 1) % 5 == 0) // 每5个元素一行 System.out.println(); } } public static int getMiddle(int[] array, int left, int right) { int temp; // 进行一趟快速排序,返回中心点位置 int mid = array[left]; // 把中心置于a[0] while (left < right) { while (left < right && array[right] >= mid) right--; temp = array[right]; // 将比中心点小的数据移动到左边 array[right] = array[left]; array[left] = temp; while (left < right && array[left] <= mid) left++; temp = array[right]; // 将比中心点大的数据移动到右边 array[right] = array[left]; array[left] = temp; } array[left] = mid; // 中心移到正确位置 return left; // 返回中心点 } public static int[] quickSort(int[] array, int left, int right) {// 快速排序法 if (left < right - 1) { // 如果开始点和结点没有重叠的时候,也就是指针没有执行到结尾 int mid = getMiddle(array, left, right); // 重新获取中间点 quickSort(array, left, mid - 1); quickSort(array, mid + 1, right); } return array; } }
运行结果:
排序前的数组: 12 11 45 6 8 43 40 57 3 20 15 88 23 使用快迅排序法后的数组: 3 6 8 11 12 20 15 23 40 43 45 88 57
4、选择排序法
SortArray_04.java
public class SortArray_04 { public static void main(String args[]) { int[] array = { 14, 5, 86, 4, 12, 3, 51, 13, 11, 2, 32, 6, 45, 34 }; // 创建一个初始化的一维数组array int keyValue; // 表示最小的元素值 int index; // 表示最小的元素值的下标 int temp; // 中间变量 System.out.println("未排序的数组:"); for (int i = 0; i < array.length; i++) { // 遍历array数组中的元素 System.out.print(" " + array[i]); // 输出数组元素 if ((i + 1) % 5 == 0) // 每5个元素一行 System.out.println(); } for (int i = 0; i < array.length; i++) { // 使用选择排序法的核心 index = i; keyValue = array[i]; for (int j = i; j < array.length; j++) if (array[j] < keyValue) { index = j; keyValue = array[j]; } temp = array[i]; array[i] = array[index]; array[index] = temp; } System.out.println("\n使用选择排序法后的数组:"); for (int i = 0; i < array.length; i++) { // 遍历排好序的array数组中的元素 System.out.print(" " + array[i]); // 输出数组元素 if ((i + 1) % 5 == 0) System.out.println(); // 每5个元素一行 } } }
运行结果:
未排序的数组: 14 5 86 4 12 3 51 13 11 2 32 6 45 34 使用选择排序法后的数组: 2 3 4 5 6 11 12 13 14 32 34 45 51 86
PS:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
我得到了一个算法,可以用一种特定的方式写出欠费的顺序。 找到数组的最低数 将其保存在新数组的开头。 标记在我们找到最低数字的起源(起始)数组点(例如将其标记为最大int数字)。 回到第1点。 重复all以按升序重写所有数字。 所以我得到了一个可以改变顺序的工作代码,但我不知道如何标记数字,多亏了这一点,我创建了一个新的数组。
本文向大家介绍Python实现的几个常用排序算法实例,包括了Python实现的几个常用排序算法实例的使用技巧和注意事项,需要的朋友参考一下 前段时间为准备百度面试恶补的东西,虽然最后还是被刷了,还是把那几天的“战利品”放点上来,算法一直是自己比较薄弱的地方,以后还要更加努力啊。 下面用Python实现了几个常用的排序,如快速排序,选择排序,以及二路并归排序等等。 运行结果如下:
本文向大家介绍堆排序实例(Java数组实现),包括了堆排序实例(Java数组实现)的使用技巧和注意事项,需要的朋友参考一下 堆排序:利用大根堆 数组全部入堆,再出堆从后向前插入回数组中,数组就从小到大有序了。 堆排序:对数组进行构造堆(最大堆) 以上这篇堆排序实例(Java数组实现)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍js实现常用排序算法,包括了js实现常用排序算法的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了js实现常用排序算法,具体内容如下 1.冒泡排序 2.选择排序 3.插入排序 4.希尔排序 5.归并排序 6.快速排序 总结:算法效率比较: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍通过实例解析JavaScript常用排序算法,包括了通过实例解析JavaScript常用排序算法的使用技巧和注意事项,需要的朋友参考一下 冒泡排序 冒泡排序是我们在编程算法中,算是比较常用的排序算法之一,在学习阶段,也是最需要接触理解的算法,所以我们放在第一个来学习。 算法介绍: 比较相邻的两个元素,如果前一个比后一个大,则交换位置。第一轮把最大的元素放到了最后面。由于每次排序最后一
本文向大家介绍C#实现的二维数组排序算法示例,包括了C#实现的二维数组排序算法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现的二维数组排序算法。分享给大家供大家参考,具体如下: 运行结果: 更多关于C#相关内容感兴趣的读者可查看本站专题:《C#数组操作技巧总结》、《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用