oc实现快排

OC的快排实现
//
//  main.m
//  sort
//
//  Created by apple on 18/4/2.
//  Copyright © 2018年 . All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Thread.h"

void swapdata(NSMutableArray *adata,NSInteger index1,NSInteger index2){

    NSNumber *i = [adata objectAtIndex:index1];
    adata [index1] = adata [index2];
    adata [index2]= i;
//    [adata replaceObjectAtIndex:index1 withObject:[adata objectAtIndex:index2]];
//    [adata replaceObjectAtIndex:index2 withObject:i];
}
void qucicksort(NSMutableArray *adata,NSInteger low,NSInteger high){
    if(low < high){
        NSInteger i = low;
        NSInteger j = high ;
        NSInteger key = low; //把数组的第一个数作为一个KEY值
        while(i<j){
            while([adata[j] intValue]>=[adata[key] intValue]&&i<j){ //注:NSNumber 的值无法直接比较大小整数可进行intValue转化进行比较。从数组末向头找如果当前值大于KEY值则 继续向前寻找
                j--;
            }
            swapdata(adata, key, j);    //若当前值小与KEY值则交换
            key = j;
            
            while([adata[i] intValue]<=[adata[key]  intValue]&&i<j){ // 从数组头向尾找如果当前值大于KEY值则 继续向后寻找

                i++;
            }
            swapdata(adata, i, key);     
            key = i;
                

        
        }
        qucicksort(adata, low, key-1);    // 将KEY值左侧重新排序
        qucicksort(adata, key+1, high);   // 将KEY值右侧重新排序
    }
}
void quickSort(NSArray* adata){
    NSMutableArray *data = [[NSMutableArray alloc]initWithArray:adata];
    qucicksort(data, 0, [adata count]-1);
    NSLog(@"快速排序后的结果: %@", data);
}
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSArray *array = [[NSArray alloc]initWithObjects:@"5",@"3",@"0",@"9", nil];

        quickSort(array);
        

    }
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值