专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java数组的排序冒泡排序选择排序二种冒泡逆排序

temp10 2024-09-25 21:29:40 java教程 9 ℃ 0 评论

Java数组的排序

在程序设计中,有时需要将一组数据进行排序,方便统计与查询数据。

Java数组的排序冒泡排序选择排序二种冒泡逆排序

程序常用的排序方法有冒泡排序、选择排序等。

冒泡排序算法定义

使用冒泡排序时,排序数组元素的过程总是小数往前放,大数往后放,类似水中气泡往上升的动作,所以称作冒泡排序。同时也可以大数往前,小数在后,倒序排列,是冒泡排序变形。

冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值, 把较小的元素移动到数组前面,把较大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部,同样,也可以逆排序。

计算过程

冒泡算法由双层循环实现,其中外层循环用于控制排序轮数,是要排序的数组长度减 1次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了。比数组长度少1次。

外层循环需要进行array.length-1轮排序,因为每一轮排序都会将当前数组中最大的元素移动到末尾,因此最后一个元素是不需要比较的。

内层循环主要用于对比数组中每个临近元素两两对比大小,根据正逆排序确定是否交换位置,对比和交换次数以排序轮数而减少。两两相比,循环次数小于数组长度减1,用j+1表示最后一个数。

内层循环需要比较arr.length-i-1对相邻元素,因为每一轮排序都会将当前未排序的部分中最大的元素移动到末尾,每次增加一个大数不再参与排序,因此未排序的部分的长度会逐渐缩小。

第一轮外层循环时把最大的元素值一步一步移动到了最后面,第二轮外层循环不再对比最后一个元素值最大数,已经到头了。

需要从头对比和移动的是其他剩余元素,减少1个元素。其他循环将依此类推,继续完成排序任务。

算法实现过程

在项目中创建 BubbleSort类,这个类的代码将实现冒泡排序的一个演示,要求冒泡排序改成倒序排序。

public class BubbleSort {

//冒泡排序方法

public void sort(int[] array) {

for (int i = 1; i < array. length; i++) {

// 比较相邻两个元素,较大的数往前排

for (int j = 0; j < array. length - i; j++) {

if (array[j] <array[j + 1]) {/*如果前一个元素比后一个元素小,则两元素互换*/

int temp = array[j]; // 把第一个元素值保存到临时变量中

array[j] = array[j+ 1]; /./ 把第二个元素值保存到第一个元素单元中

array[j + 1] = temp; // 把临时变量(也就是第一个元素原值) 保存到第二个元素中)

showArray(array); // 输出冒泡排序后的数组元素

/*显示数组中的所有元素*/

/*要显示的数组*/

public void showArray(int[] array) {

System. out. println("冒泡排序的结果: ");

for (int i : array) ( // 遍历数组

System. out. print(i + " "); // 输出每个数组元素值

System. out. println();

public static void main(String[] args) {

// 创建一个数组,这个数组元素是乱序的

int[] array = { 63, 4, 24, 1, 3, 15 };

// 创建冒泡排序类的对象

BubbleSort sorter = new BubbleSort();

// 调用排序方法将数组排序

sorter. sort(array);

}

).

运行结果

冒泡排序的结果:

63 24 15 4 3 1


本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表