算法-选择排序

简介:

选择排序(Selection sort)是一种常见的排序算法,算法实现的逻辑每一次从待排序的数组中选出最小(或最大)的一个元素,存放在序列的第一个位置,然后生鲜的元素中选择第二小(或者第二大)的元素放在第二个位置,以此类推,将整个数组排序成功。对于一个长度为N的数组,选择排序大概需要N^2/2的比较和N次交换,运行的时间和输入无关,一个有序的数组和一个无序的数组最终运行的时间是一样的,数据移动的次数是最少的,交换数组的次数和数组的大小呈线性关系。

关键代码实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-( NSMutableArray  *)selectorSort:( NSMutableArray  *)arr{
     for  ( NSInteger  i=0; i<[arr count]; i++) {
        NSInteger  min=i;
         for  ( NSInteger  j=i+1; j<[arr count]; j++) {
             if  ([arr[j] integerValue]<[arr[min] integerValue]) {
                 min=j;
             }
         }
         
         NSInteger  temp=[arr[i] integerValue];
         arr[i]=[ NSNumber  numberWithInteger:[arr[min] integerValue]];
         arr[min]=[ NSNumber  numberWithInteger:temp];
 
     }
     return  arr;
}

测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
NSMutableArray  *arr=[[ NSMutableArray  alloc]initWithCapacity:10];
[arr addObject:@ "4" ];
[arr addObject:@ "3" ];
[arr addObject:@ "6" ];
[arr addObject:@ "9" ];
[arr addObject:@ "1" ];
[arr addObject:@ "10" ];
[arr addObject:@ "8" ];
[arr addObject:@ "0" ];
MySort  *sort=[[MySort alloc]init];
 
NSMutableArray   *resultArr= [sort selectorSort:arr];
 
for  ( NSInteger  i=0; i<[resultArr count]; i++) {
     NSLog (@ "%@" ,[resultArr objectAtIndex:i]);
}
NSLog (@ "iOS技术交流群:228407086" );
NSLog (@ "原文地址:http://www.cnblogs.com/xiaofeixiang" );

效果如下:

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4579446.html,如需转载请自行联系原作者

相关文章
|
5月前
|
搜索推荐 算法 C语言
C语言选择排序算法,从入门到精通只需1秒!
C语言选择排序算法,从入门到精通只需1秒!
|
2月前
|
搜索推荐 算法 Java
经典排序算法之-----选择排序(Java实现)
这篇文章通过Java代码示例详细解释了选择排序算法的实现过程,包括算法的基本思想、核心代码、辅助函数以及测试结果,展示了如何通过选择排序对数组进行升序排列。
经典排序算法之-----选择排序(Java实现)
|
4月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
4月前
|
搜索推荐
排序算法---选择排序-----详解&&代码
排序算法---选择排序-----详解&&代码
|
4月前
|
算法 搜索推荐
数据结构与算法-选择排序
数据结构与算法-选择排序
28 4
|
4月前
|
搜索推荐 算法
【C/排序算法】:堆排序和选择排序
【C/排序算法】:堆排序和选择排序
28 0
|
4月前
|
算法 搜索推荐 Java
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
30 0
|
4月前
|
存储 算法 C语言
数据结构和算法——堆排序(选择排序、思路图解、代码、时间复杂度、堆排序及代码)
数据结构和算法——堆排序(选择排序、思路图解、代码、时间复杂度、堆排序及代码)
30 0
|
5月前
|
存储 算法 搜索推荐
【数据结构与算法】:选择排序与快速排序
欢迎来到排序的第二个部分:选择排序与快速排序!
【数据结构与算法】:选择排序与快速排序
|
5月前
|
机器学习/深度学习 搜索推荐 算法
【排序算法】插入排序与选择排序详解
【排序算法】插入排序与选择排序详解
下一篇
无影云桌面