美文网首页算法入门
算法入门-数组之选择排序

算法入门-数组之选择排序

作者: zhonglaoban | 来源:发表于2019-03-26 21:58 被阅读0次

选择排序

选择排序是一种比较直观的排序算法。它通过不断的在未排序的数组中找出最小(大)的数,然后将它放在已排序数组的末尾,当未排序的数组的个数小于等于1的时候,排序完成。

关键步骤:

1、将需要排序的数组分为两部分,取变量 i 表示已排序数组的坐标。
2、取变量 j = i + 1 表示未排序的数组的起始位置,count 表示数组个数 ,j 到 count 表示未排序的数组,遍历未排序的数组找到最小数的坐标min,将 min 放到已排序数组的末尾,i ++。
3、重复以上步骤,如果 i = count - 1,那么数组排序完毕。

代码实现(Objective-c):

-(void)selectedSort:(NSMutableArray *)mularray {
    int count = (int)mularray.count;
    for (int i = 0; i < count - 1; i++) {
        int min = i;
        for (int j = i + 1; j < count; j++) {
            if (mularray[min] > mularray[j]) {
                min = j;
            }
        }
        [mularray exchangeObjectAtIndex:min withObjectAtIndex:i];
        NSLog(@"%@", mularray);
    }
}

图片解析:

选择排序

步骤解析:

1、i = 0,从25,12,22,11中找出最小的数11,将11和已排序数组的末尾(0)交换。

此时数组为:11,25,12,22,64

2、i = 1,从12,22,64中找出最小的数12,将12和已排序数组的末尾(1)交换 。

此时数组为:11,12,25,22,64

3、i = 2,从22,64中找出最小的数22,将22和已排序数组的末尾(2)交换 。

此时数组为:11,12,22,25,64

4、i = 3,将64和已排序数组末尾(3)的数比较,不需要交换 。
5、i = 4,此时i == 5 - 1,排序完成 。

参考资料:
1、GeeksforGeeks
2、维基百科

相关文章

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 算法入门-数组之选择排序

    选择排序 选择排序是一种比较直观的排序算法。它通过不断的在未排序的数组中找出最小(大)的数,然后将它放在已排序数组...

  • 2018-07-18

    排序算法之选择排序 基本思想 选择排序算法的基本思想是:首先,找到数组中最小的那个元素,其次,将它和数组的第一个元...

  • 『算法』之 初级排序算法总结

    本篇文章同时收录在我的个人博客:『算法』之 初级排序算法总结 选择排序 一种最简单的排序算法:首先,找到数组中最小...

  • 算法入门——冒泡排序、选择排序

    上篇文章学习了算法入门——顺序查找、二分查找,这篇文章我们学习算法入门——冒泡排序、选择排序。 冒泡排序 冒泡排序...

  • Java语言——数组排序算法

    数组有很多常用的算法,包括冒泡排序、直接选择排序和反转排序。 一、冒泡排序 冒泡排序是最常用的数组排序算法之一,它...

  • 算法入门之数组排序

    排序的道理: 所有递归和循环可以互相转换 循环时如果想不清楚i

  • 2018-06-30

    排序算法之堆排序 堆排序是利用堆的数据结构而设计的一种排序算法,堆排序是一种选择排序。可以利用数组的特点快速定位制...

  • 算法入门——插入排序、快速排序

    上篇文章学习了算法入门——冒泡排序、选择排序,这篇文章我们学习算法入门——插入排序。 插入排序 插入排序是在一组列...

  • 排序算法

    常见的排序算法 常见的排序算法有:插入、希尔、选择、冒泡、归并、快速、堆排序。。。 插入排序 算法步骤一、从数组的...

网友评论

    本文标题:算法入门-数组之选择排序

    本文链接:https://www.haomeiwen.com/subject/aahimqtx.html