排序算法 #1 选择排序(文字版)

欢迎来到算法小课堂,今天讲解的内容是选择排序。

选择排序的基本思想是:

首先,将数组分为已排序区间和未排序区间。

然后,找出未排序区间中最小(大)的元素,放在已排序区间的末尾。重复这个过程,直到未排序区间的元素全部考察完毕。

01 

题目解析

TOPIC ANALYSIS

接下来,我们以数组{1, 2, 5, 3, 4} 为例进行讲解。

对于该数组来说,元素1和2处在已排序区间,而元素5、3、4则处在未排序区间。

定义变量i指向未排序区间的第一个元素5;定义变量minIndex,其初始值为变量i的值;定义变量j,其初始值为i+1。

接着,将变量j所指向的元素和变量minIndex所指向的元素进行比较,如果变量j所指向的元素值小于变量minIndex所指向的元素值,则将变量j的值赋予变量minIndex。

在这里,j所指向的元素为3,小于minIndex所指向的元素5,因此,将变量j的值赋予变量minIndex,即minIndex指向j所指向的元素。

继续考察下一个元素,即将变量j加1。

此时,变量j所指向的元素值大于变量minIndex所指向的元素值,且变量j指向数组的末尾。因此,变量minIndex所指向的元素3,就是未排序区间中最小的元素。

接下来要做的就是将变量i所指向的元素5和变量minIndex所指向的元素3,进行位置交换。

此时,元素3就处于已排序区间的末尾。

对于未排序区间的元素5和4来说,重复上述过程即可完成排序。

02

代码实现

CODE

public void selectionSort(int[] arr) {    for(int i = 0; i < arr.length; i++) {        int minIndex = i;        for(int j = i + 1; j < arr.length; j++) {            if (arr[j] - arr[minIndex] < 0) {                minIndex = j;            }        }        swap(arr, i, minIndex);    }}
private void swap(int[] arr, int m, int n) {    int temp = arr[m];    arr[m] = arr[n];    arr[n] = temp;}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值