iOS算法总结-选择排序
2017-10-30 15:08
281 查看
选择排序法(Simple Selection Sort) : 通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1≤i≤n)个记录交换之。
代码如下:
从选择排序的过程来看,它最大的特点就是交换移动数据次数相当少,节约了相应的时间。分析它的时间复杂度发现,无论最好最差情况,其比较次数是一样多的 n-1 + n-2 + ... + 1 = n(n-1)/2。而对于交换次数而言,最好的时候交换为0次,最差的时候,为n-1次,基于最终的排序时间是比较与交换的次数总和,因此,总的时间复杂度为O(n²)
尽管与冒泡排序同为O(n²),但选择排序的性能上还是要略优于冒泡排序。
作者:方圆一里
链接:http://www.jianshu.com/p/ec58c2794daf
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
代码如下:
- (void)logChooseArray { NSMutableArray * arr = @[@16,@1,@2,@9,@7,@12,@5,@3,@8,@13,@10].mutableCopy; int min = 0, arrCount = (int)arr.count; for (int i = 0; i < arrCount-1; i++) { min = i; for (int j = i + 1; j < arrCount; j++) { if (arr[min] > arr[j]) { /*如果有小于当前的最小值的关键字*/ min = j; /*将此关键字的下标赋值给min*/ } } if (i != min) { /*若min不等于i,说明找到最小值,交换*/ [arr exchangeObjectAtIndex:i withObjectAtIndex:min]; } } } //每次循环打印结果如下 1 16 2 9 7 12 5 3 8 13 10 1 2 16 9 7 12 5 3 8 13 10 1 2 3 9 7 12 5 16 8 13 10 1 2 3 5 7 12 9 16 8 13 10 1 2 3 5 7 12 9 16 8 13 10 1 2 3 5 7 8 9 16 12 13 10 1 2 3 5 7 8 9 16 12 13 10 1 2 3 5 7 8 9 10 12 13 16 1 2 3 5 7 8 9 10 12 13 16 1 2 3 5 7 8 9 10 12 13 16 1 2 3 5 7 8 9 10 12 13 16复杂度分析:
从选择排序的过程来看,它最大的特点就是交换移动数据次数相当少,节约了相应的时间。分析它的时间复杂度发现,无论最好最差情况,其比较次数是一样多的 n-1 + n-2 + ... + 1 = n(n-1)/2。而对于交换次数而言,最好的时候交换为0次,最差的时候,为n-1次,基于最终的排序时间是比较与交换的次数总和,因此,总的时间复杂度为O(n²)
尽管与冒泡排序同为O(n²),但选择排序的性能上还是要略优于冒泡排序。
作者:方圆一里
链接:http://www.jianshu.com/p/ec58c2794daf
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- 算法:冒泡排序(Bubble Sort)、插入排序(Insertion Sort)和选择排序(Selection Sort)总结
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)
- iOS开发--图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序
- 算法总结JS版(二)—— 选择排序(Selection Sort)
- iOS 算法面试题(冒泡排序、选择排序、链表逆序)~demo
- java基本算法总结(冒泡排序、选择排序、插入排序)
- 算法总结-选择排序,插入排序
- 算法 -- iOS开发用Objective_C / Swift3.0实现:快速排序 / 冒泡排序 / 选择排序
- 关于基本排序的总结选择排序: 算法是: ① 第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换。 ③第i趟排序 第i趟排序开始时,当前有序区和无序区
- 无聊时总结总结算法之03简单选择排序
- 【iOS学习笔记】iOS算法(二)之选择排序
- IOS算法(二)之选择排序
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)
- 算法总结(3)选择排序
- Java数据结构和算法总结-冒泡排序、选择排序、插入排序算法分析
- 选择排序小总结。
- 算法 ----- 排序lowB三人组 冒泡排序 选择排序 插入排序
- 【算法】选择排序
- 几种常用的排序算法:插入排序、冒泡排序、选择排序的算法及C++实现
- 排序算法学习总结