排序算法图解之Java选择排序
作者:兴趣使然黄小黄
选择排序的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。本文通过图片和示例介绍了选择排序,需要的可以参考一下
1.选择排序简介
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
2.图解选择排序算法
选择排序的基本思想如下:
第一次:从arr[0]~arr[n-1]中选取最小值,与arr[0]进行交换;
第二次:从arr[1]~arr[n-1]中选取最小值,与arr[1]进行交换;
第三次:从arr[2]~arr[n-1]中选取最小值,与arr[2]进行交换;
…
第 i 次:从arr[i]~arr[i-1]中选取最小值,与arr[i]进行交换;
总共通过n-1次,可以得到从小到大的有序序列。
以序列:{8, 3, 2, 1, 7, 4, 6, 5} 为例!分步骤图解如下:
思路说明:
1.在每趟排序时,都假定当前位置的元素为最小值,如果在遍历过程中发现有比当前位置元素还小的值,则替换最小值。(先将最小值记录,此趟遍历完成再替换)
2.选择排序一共有数组大小-1趟排序。
3.选择排序代码实现
import java.util.Arrays; /** * @author 兴趣使然黄小黄 * @version 1.0 * 选择排序 */ public class SelectSort { public static void main(String[] args) { int[] array = {8, 3, 2, 1, 7, 4, 6, 5}; System.out.println("排序前: " + Arrays.toString(array)); selectSort(array); System.out.println("排序后: " + Arrays.toString(array)); } //选择排序 public static void selectSort(int[] arr){ //选择排序过程 for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; //假定最小索引,最小值为第一个元素 int min = arr[minIndex]; for (int j = i + 1; j < arr.length; j++) { if (min > arr[j]){ //更新最小值 min = arr[j]; minIndex = j; } } //将最小值放进arr[i] if (i != minIndex){ arr[minIndex] = arr[i]; arr[i] = min; } //输出每轮排序后的结果 System.out.println("第" + (i+1) + "趟: " + Arrays.toString(arr)); } } }
运行结果如下:
到此这篇关于排序算法图解之Java选择排序的文章就介绍到这了,更多相关Java选择排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!