云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > JAVA语言基础05 - 循环问题 - 数组

JAVA语言基础05 - 循环问题 - 数组

  • 62 次阅读
  • 3 次下载
  • 2025/6/17 7:47:06

2.5.3. 数组的“扩容”

Java语法规定,数组的长度在创建后是不可改变的,这点需要明确。而所谓的扩容实际上是指创建一个更大的新数组并将原有数组的内容复制到其中。可以通过Arrays.copyOf()方法,简便的实现数组的扩展,代码如下:

1. int [ ] a = { 10,20,30,40,50 } ; 2. a = Arrays . copyOf ( a, a.length+1 );

上段代码执行后,输出a数组的数据为:10,20,30,40,50,0。此时a数组的长度为6,实现了所谓的“扩容”。

2.6. 数组排序

2.6.1. 数组的排序

对数组所施加的算法有很多,其中最常用的即为排序算法。所谓排序,是指将数组元素按照从小到大或从大到小的顺序重新排列,当数组元素数较多时, 排序算法的优劣至关重要,因为它将直接影响程序的执行效率,一般情况下,通过排序过程中数组元素的交换次数来衡量排序算法的优劣。

常用排序算法有:插入排序、冒泡排序、快速排序等。今天介绍的是冒泡排序。

2.6.2. 数组冒泡排序算法

冒泡排序是一个非常经典的排序算法,它的排序原则为:比较相邻的元素,如果违反最后的顺序准则(从大到小或是从小到大),则交换。可以简化理解为:第一次找到所有元素中最大(或最小)的放在最后一个位置上,不再变动;第二次找到剩余所有元素中最大(或最小)的放在倒数第二个位置上,不再变动,以此类推,直

到排序完成。在进行比较时既可以采用“下沉”的方式,也可以使用“上浮”的方式实现。

冒泡排序逻辑如下图– 1所示。

图- 1

下面对如上示例进行详细分析,需求:初始序列为89,50,84,57,61,20,86,升序排(小的在前,大的在后);

第一轮第一次,89与50对比,交换位置,结果:50,89,84,57,61,20,86 第一轮第二次,89与84对比,交换位置,结果:50,84,89,57,61,20,86 第一轮第三次,89与57对比,交换位置,结果:50,84,57,89,61,20,86 第一轮第四次,89与61对比,交换位置,结果:50,84,57,61,89,20,86 第一轮第五次,89与20对比,交换位置,结果:50,84,57,61,20,89,86 第一轮第六次,89与86对比,交换位置,结果:50,84,57,61,20,86,89 将89冒出来了,现在序列为:50,84,57,61,20,86,89 第二轮第一次,50与84对比,位置不换

第二轮第二次,84与57对比,交换位置,结果:50,57,84,61,20,86,89

第二轮第三次,84与61对比,交换位置,结果:50,57,61,84,20,86,89 第二轮第四次,84与20对比,交换位置,结果:50,57,61,20,84,86,89 第二轮第五次,84与86对比,位置不换

将86冒出来了,现在序列为:50,57,61,20,84,86,89 第三轮第一次,50与57对比,位置不换 第三轮第二次,57与61对比,位置不换

第三轮第三次,61与20对比,交换位置,结果:50,57,20,61,84,86,89 第三轮第四次,61与84对比,位置不换

将84冒出来了,现在序列为:50,57,20,61,84,86,89 第四轮第一次,50与57对比,位置不换

第四轮第二次,57与20对比,交换位置,结果:50,20,57,61,84,86,89 第四轮第三次,57与61对比,位置不换

将61冒出来了,现在序列为:50,20,57,61,84,86,89

第五轮第一次,50与20对比,交换位置,结果:20,50,57,61,84,86,89 第五轮第二次,50与57对比,位置不换

将57冒出来了,现在序列为:20,50,57,61,84,86,89 第六轮第一次,20与50对比,位置不换

将50冒出来了,现在的序列为:20,50,57,61,84,86,89

通过上面的分析总结出如下几点,找出规律,通过程序即可完成冒泡算法的实现。

?

若数组元素数为7, 则排序过程需要经历6轮,因为有1个元素是不需要比较的。

? 若数组元素数为7,第1轮比较6次,第2轮比较5次,依次类推,第6轮只比较1次。

通过如上的分析,写出冒泡排序算法如下所示:

1. int[] arr = {89,50,84,57,61,20,86}; 2. for(int i=0;iarr[j+1]){ 5. int temp = arr[j]; 6. arr[j] = arr[j+1]; 7. arr[j+1] = temp; 8. } 9. } 10. }

2.6.3. Arrays.sort方法用于数组排序

JDK提供的Arrays.sort()方法封装了数组的排序算法,如下述代码所示:

1. int[ ] arr = { 49, 81, 1, 64, 77, 50, 0, 54, 77, 18 }; 2. Arrays.sort( arr ) ;

3. for(int i=0; i

分析上面的代码,输出结果为:0 1 18 49 50 54 64 77 77 81。可以看到,借助于Arrays.sort()方法实现了升序排列。

搜索更多关于: JAVA语言基础05 - 循环问题 - 数组 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

2.5.3. 数组的“扩容” Java语法规定,数组的长度在创建后是不可改变的,这点需要明确。而所谓的扩容实际上是指创建一个更大的新数组并将原有数组的内容复制到其中。可以通过Arrays.copyOf()方法,简便的实现数组的扩展,代码如下: 1. int [ ] a = { 10,20,30,40,50 } ; 2. a = Arrays . copyOf ( a, a.length+1 ); 上段代码执行后,输出a数组的数据为:10,20,30,40,50,0。此时a数组的长度为6,实现了所谓的“扩容”。 2.6. 数组排序 2.6.1. 数组的排序 对数组所施加的算法有很多,其中最常用的即为排序算法。所谓排序,是指将数组元素按照从小到大或从大到小的顺序重新排列,当数组元素数较多时, 排序算法

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com