算法很难?三分钟带你掌握经典算法「选择排序」

一、选择排序介绍

选择排序(Selection sort)是一种简单直观的排序算法。

二、算法思想

第 1 趟 从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置;

然后再从剩余的未排序元素中寻找到最小(大)元素,放到已排序的序列的末尾。

以此类推,直到全部待排序的数据元素的个数为零,元素全部有序。

三、实现过程

规律:

第 1 趟:从n个数据中找出最小的数据和第一个数据交换;

第 2 趟:从第二个数据开始的n-1个数据中再选出最小的数据与第二个数据交换;

以此类推…

第 i 趟,则从第 i 个数据开始的 n-i+1 个数据中选出最小的数据与第i个数据交换,直到整个序列有序。

四、代码实现

publicclass SelectSort {publicstaticvoidmain(String[] args) {        System.out.println("输入要排序的值,输入的每个值用逗号隔开:");        Scanner input =newScanner(System.in);Stringstr = input.nextLine();// 将字符串按照","拆分成字符串数组String[] strArray = str.split(",");// 新建数组用来存储拆分出来的每个值int[]array=newint[strArray.length];// 给数组循环遍历赋值for(inti =0; i < strArray.length; i++) {array[i] = Integer.parseInt(strArray[i]);        }        System.out.println("排序前的数组:"+ Arrays.toString(array));// 排序selectSort(array);        System.out.println("排序后的数组:"+ Arrays.toString(array));    }/**

    * 选择排序

    *

    * @param array 待排序的数组

    */privatestaticvoidselectSort(int[]array) {//判断数组为空或为一个元素的情况if(null ==array||array.length <=1) {return;        }for(inti =0; i array[j]) {                    temp =array[j];                    tempIndex = j;                }            }// 如果临时变量发生改变,则说明有比当前外层循环位置更小的元素,需要将这两个元素交换位置if(tempIndex != i) {array[tempIndex] =array[i];array[i] = temp;            }            System.out.println("  第"+ (i +1) +"趟后:"+ Arrays.toString(array));        }    }}

五、执行结果:

六、更多算法学习

帮忙转发文章后,关注私信回复【学习】即可获取算法相关视频及文档

全部评论

相关推荐

11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务