[JAVA] 排序算法图解之Java选择排序

1867 0
Honkers 2022-11-6 12:01:05 | 显示全部楼层 |阅读模式
目录

    1.选择排序简介2.图解选择排序算法3.选择排序代码实现


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~arr[i-1]中选取最小值,与arr进行交换;
总共通过n-1次,可以得到从小到大的有序序列。
以序列:{8, 3, 2, 1, 7, 4, 6, 5} 为例!分步骤图解如下:


思路说明:
1.在每趟排序时,都假定当前位置的元素为最小值,如果在遍历过程中发现有比当前位置元素还小的值,则替换最小值。(先将最小值记录,此趟遍历完成再替换)
2.选择排序一共有数组大小-1趟排序。

3.选择排序代码实现
  1. import java.util.Arrays;
  2. /**
  3. * @author 兴趣使然黄小黄
  4. * @version 1.0
  5. * 选择排序
  6. */
  7. public class SelectSort {
  8.     public static void main(String[] args) {
  9.         int[] array = {8, 3, 2, 1, 7, 4, 6, 5};
  10.         System.out.println("排序前: " + Arrays.toString(array));
  11.         selectSort(array);
  12.         System.out.println("排序后: " + Arrays.toString(array));
  13.     }
  14.     //选择排序
  15.     public static void selectSort(int[] arr){
  16.         //选择排序过程
  17.         for (int i = 0; i < arr.length - 1; i++) {
  18.             int minIndex = i; //假定最小索引,最小值为第一个元素
  19.             int min = arr[minIndex];
  20.             for (int j = i + 1; j < arr.length; j++) {
  21.                 if (min > arr[j]){
  22.                     //更新最小值
  23.                     min = arr[j];
  24.                     minIndex = j;
  25.                 }
  26.             }
  27.             //将最小值放进arr[i]
  28.             if (i != minIndex){
  29.                 arr[minIndex] = arr[i];
  30.                 arr[i] = min;
  31.             }
  32.             //输出每轮排序后的结果
  33.             System.out.println("第" + (i+1) + "趟: " + Arrays.toString(arr));
  34.         }
  35.     }
  36. }
复制代码
运行结果如下:


到此这篇关于排序算法图解之Java选择排序的文章就介绍到这了,更多相关Java选择排序内容请搜索中国红客联盟以前的文章或继续浏览下面的相关文章希望大家以后多多支持中国红客联盟!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4008
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行