博学谷——让IT教学更简单,让IT学习更有效
二、案例实现
定义Example22类,代码如下所示:
public class Example22 { }
public static void main(String[] args) { }
static int getMin (int[] arr) { }
int min = arr[0];
for (int x = 1; x < arr.length; x++) { }
return min ;
if (arr[x] < min ) { }
min= arr[x];
int[] arr = { 4, 1, 6, 3, 9, 8 }; int min = getMin (arr); System.out.println(\
运行结果如图2-24所示。
图2-24 运行结果
三、案例总结
getMin()方法用于求数组中的最小值,该方法中定义了一个临时变量min,用于记住数组的最小值。需要注意的是,在for循环中的变量i是从1开始的,这样写的原因是程序已经假设第一个元素为最小值,for循环中只需要从第二个元素开始比较,从而提高程序的运行效率。
案例2-22 数组排序 一、案例描述
1、 考核知识点
编号:00102027
名称:数组的常见操作-数组的排序
33
博学谷——让IT教学更简单,让IT学习更有效
2、 练习目标
? 掌握一维数组中元素的排序
3、 需求分析
在操作数组时,经常需要对数组中元素进行排序。常用的排序算法有选择排序,冒泡排序等。
请定义一个数组,用选择排序算法将数组中的元素进行从小到大的排序。
4、 设计思路(实现原理)
选择排序法的原理是:首先找到数组中的最值,将最小值(最大值)的下标与第一个元素 的下标交换,再在剩下的元素中找最小值(最大值)的下标与第二个元素的下标交换,以此类推,完成所有元素的排序。
对数组元素进行选择排序的设计思路是:
1) 定义排序方法,在方法中,用for循环嵌套实现排序。第一层循环是从数组的第一个元 素开始循环。第二层循环用于与第一层循环中的元素比较找出最值,并将最小值的下标跟第一个元素的下标进行互换。
2) 为了方便观察排序结果,将案例2-21中的printArr()方法复制到类中,输出排序前和排 序后的数组元素。
二、案例实现
定义Example23类,代码如下所示:
class Example23 {
public static void main(String[] args) { } {
for(int x=0; x for(int y=x+1; y 34 if(arr[y] int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; int[] arr = {23,87,45,36,56,17}; System.out.println(\排序前\printArray(arr); selectSort(arr); printArray(arr); System.out.println(\排序后\ public static void selectSort(int[] arr) 博学谷——让IT教学更简单,让IT学习更有效 } } { } System.out.print(\ for(int x=0; x System.out.println(\ if(x==(arr.length-1)) { } else { } System.out.print(arr[x]+\ System.out.print(arr[x]); } public static void printArray(int[] arr) 运行结果如图2-25所示。 图2-25 运行结果 三、案例总结 常用的排序算法除了选择排序外,还有冒泡排序。在冒泡排序的过程中,不断地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似。 接下来通过几个步骤来具体分析一下冒泡排序的整个过程,具体如下: 1、 从第一个元素开始,将相邻的两个元素依次进行比较,直到最后两个元素完成比较。如果前一个 元素比后一个元素大,则交换它们的位置。整个过程完成后,数组中最后一个元素自然就是最大值,这样也就完成了第一轮比较。 2、 除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一步相似,这样就可以将数组中 第二大的数放在了倒数第二个位置。 3、 以此类推,持续对越来越少的元素重复上面的步骤,直到没有任何一对元素需要比较为止。 35