下载此文档

各大排序算法的objective-c实现以及图形化演示比较.doc


文档分类:IT计算机 | 页数:约15页 举报非法文档有奖
1/15
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/15 下载此文档
文档列表 文档介绍
各大排序算法的Objective-C实现以及图形化演示比较
/ 邮件群发
用Objective-C实现几种基本的排序算法,并把排序的过程图形化显示。其实算法还是挺有趣的^ ^.
选择排序
冒泡排序
插入排序
快速排序
选择排序
以升序为例。
选择排序比较好理解,一句话概括就是依次按位置挑选出适合此位置的元素来填充。
暂定第一个元素为最小元素,往后遍历,逐个与最小元素比较,若发现更小者,与先前的”最小元素”交换位置。达到更新最小元素的目的。
一趟遍历完成后,能确保刚刚完成的这一趟遍历中,最的小元素已经放置在前方了。然后缩小排序范围,新一趟排序从数组的第二个元素开始。
在新一轮排序中重复第1、2步骤,直到范围不能缩小为止,排序完成。
选择排序
以下方法在NSMutableArray+
- (void)parator:(parator didExchange:(JXSortExchangeCallback)exchangeCallback {  
if ( == 0) {  
return;  
}  
for (NSInteger i = 0; i <  - 1; i ++) { 
for (NSInteger j = i + 1; j < ; j ++) {  
if (comparator(self[i], self[j]) == NSOrderedDescending) {  
[self jx_exchangeWithIndexA:i indexB:j didExchange:exchangeCallback];  
}  
}  
}  

冒泡排序
在一趟遍历中,不断地对相邻的两个元素进行排序,小的在前大的在后,这样会造成大值不断沉底的效果,当一趟遍历完成时,最大的元素会被排在后方正确的位置上。
然后缩小排序范围,即去掉最后方位置正确的元素,对前方数组进行新一轮遍历,重复第1步骤。直到范围不能缩小为止,排序完成。
冒泡排序
- (void)parator:(parator didExchange:(JXSortExchangeCallback)exchangeCallback {  
if ( == 0) {  
return;  
}  
for (NSInteger i =  - 1; i > 0; i --) {  
for (NSInteger j = 0; j < i; j ++) {  
if (comparator(self[j], self[j + 1]) == NSOrderedDescending) {  
[self jx_exchangeWithIndexA:j indexB:j + 1 didExchange:exchangeCallback];  
}  
}  
}  

插入排序
插入排序是从一个乱序的数组中依次取值,插入到一个已经排好序的数组中。
这看起来好像要两个数组才能完成,但如果只想在同一个数组内排序,也是可以的。此时需要想象出两个区域:前方有序区和后方乱序区。
1、分区。开始时前方有序区只有一个元素,就是数组的第一个元素。然后把从第二个元素开始直到结尾的数组作为乱序区。
2、从乱序区取第一个元素,把它正确插入到前方有序区中。把它与前方无序区的最后一个元素比较,亦即与它的前一个元素比较。
如果比前一个元素要大,则不需要交换,这时有序区扩充一格,乱序区往后缩减一格,相当于直接拼在有序区末尾。
如果和前一个元素相等,则继续和前二元素比较、再和前三元素比较……如果往前遍历到头了,发现前方所有元素值都长一个样的话(囧),那也可以,不需要交换,这时有序区扩充一格,乱序区往后缩减一格,相当于直接拼在有序区末尾。如果比前一个元素大呢?对不起作为有序区不可能出现这种情况。如果比前一个元素小呢,请看下一点。
如果比前一个元素小,则交换它们的位置。交换完后,继续比较取出元素和它此时的前一个元素,若更小就交换,若相等就比较前一个,直到遍历完成。至此,把乱序区第一个元素正确插入到前方有序区中。
3、往后缩小乱序区范围,继续取缩小范围后的第一个元素,重复第2步骤。直到范围不能缩小为止,排序完成。
插入排序
- (void)parator:(parator didExchange:(JXSortExchangeCallback)exchangeCallback {  
if ( == 0) {  
return;  
}  
for (NSInte

各大排序算法的objective-c实现以及图形化演示比较 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数15
  • 收藏数0 收藏
  • 顶次数0
  • 上传人birth201208
  • 文件大小207 KB
  • 时间2018-11-12