实例037 使用选择排序法对数组排序
实例037 使用选择排序法对数组排序
实例说明
选择排序(SelectionSort
)是一种简单直观的排序算法。本实例演示如何使用选择排序法.
对一维数组进行排序,运行本实例,
- 首先单击“生成随机数组”按钮,生成一个随机数组,并显示在上方的文本域控件中;
- 然后单击“排序”按钮,使用选择排序法对生成的维数组进行排序,并将排序后的一维数组显示在下方的文本域控件中。
实例的运行效果如图57所示。
实现过程
(3)编写“生成随机数组”按钮的事件处理方法,在该方法中创建Random
随机数对象,初始化数组元素值时,通过该对象为每个数组元素生成随机数。关键代码如下:
1 | JButton btnNewButton = new JButton("生成随机数"); |
(4)编写“排序”按钮的事件处理方法,在该方法中使用排序算法对生成的随机数组进行排序,然后把排序后的数组元素显示到文本域控件中。关键代码如下:
1 | JButton btnNewButton_1 = new JButton("选择排序"); |
多学两招
利用选择排序法从数组中挑选最大值并放在数组最后,而遇到重复的相等值不会做任何处理,所以,如果程序允许数组有重复值的情况,建议使用选择排序方法,因为它的数据交换次数较少,相对速度也会略微提升,这取决于数组中重复值的数量
技术要点
本实例应用的主要技术点就是选择排序算法。选择排序算法的基本思想如下:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
例如,对一个一维数组采用选择排序算法进行排序的过程如图5.8所示。
完整代码
1 | package com; |
运行效果
生成的数组:
1 | 4 23 31 1 29 47 36 20 13 41 |
排序后的数组:
1 | 1 4 13 20 23 29 31 36 41 47 |
每一趟排序过程
1 | [4,23,31,1,29,41,36,20,13,47] |