oc代码实现快速排序
时间: 2023-09-12 17:03:36 浏览: 51
下面是一个使用Objective-C语言实现的快速排序算法的示例代码:
```objective-c
#import <Foundation/Foundation.h>
void swap(NSMutableArray *array, NSInteger index1, NSInteger index2) {
id temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
}
NSInteger partition(NSMutableArray *array, NSInteger low, NSInteger high) {
// 选择数组中的最后一个元素作为基准值
id pivot = array[high];
// 将小于基准值的元素放在左边,大于基准值的元素放在右边
NSInteger i = low - 1;
for (NSInteger j = low; j <= high - 1; j++) {
if ([array[j] compare:pivot] == NSOrderedAscending) {
i++;
swap(array, i, j);
}
}
swap(array, i + 1, high);
return i + 1;
}
void quickSort(NSMutableArray *array, NSInteger low, NSInteger high) {
if (low < high) {
NSInteger pivotIndex = partition(array, low, high);
// 对基准值左边的子数组进行快速排序
quickSort(array, low, pivotIndex - 1);
// 对基准值右边的子数组进行快速排序
quickSort(array, pivotIndex + 1, high);
}
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSMutableArray *array = [NSMutableArray arrayWithObjects:@5, @3, @8, @4, @2, nil];
// 调用快速排序算法对数组进行排序
quickSort(array, 0, array.count - 1);
// 输出排序后的结果
NSLog(@"%@", array);
}
return 0;
}
```
这段代码使用了递归的思想来实现快速排序。首先,选择数组中的最后一个元素作为基准值,然后将小于基准值的元素放在左边,大于基准值的元素放在右边。然后,对基准值左边和右边的子数组分别进行递归调用,直到子数组的长度为1或0时停止递归。最终,通过不断交换元素的位置,实现了对数组的快速排序。