zoukankan      html  css  js  c++  java
  • 算法-选择排序

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

    关键代码实现如下:

    -(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;
    }

    测试:

            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");
    

    效果如下:

  • 相关阅读:
    MySql数据基础之数据表操作
    MySql数据库之数据库基础命令
    MySql数据库基础之数据库简介及安装
    JQuery之Ajax基础
    Ajax简单应用之个人简历页面搭建
    Ajax之处理不同格式的JSON数据
    题解 P2447 【[SDOI2010]外星千足虫】
    题解 P4035 【[JSOI2008]球形空间产生器】
    题解 P2831 【愤怒的小鸟】
    题解 P2827 【蚯蚓】
  • 原文地址:https://www.cnblogs.com/xiaofeixiang/p/4579446.html
Copyright © 2011-2022 走看看