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

选择排序

选择排序是一种比较直观的排序算法。它通过不断的在未排序的数组中找出最小(大)的数,然后将它放在已排序数组的末尾,当未排序的数组的个数小于等于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、维基百科

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,391评论 0 2
  • 基础篇NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(...
    oyan99阅读 5,151评论 0 18
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,214评论 0 52
  • 2018年3月4日,新学年开学前一天,全体教师到岗,迎接开学! 上午8:30集中,3人请假,1人迟到! 任务:打扫...
    甲午之印阅读 103评论 0 0
  • 关于她,我最心疼的一个人。 从来没有一个人把你当成生命,然而这个人却视你如命。 一起走过的田径场,一起吃过的有味道...
    小枝丫阅读 410评论 0 1