使用OC写一个冒泡排序
时间: 2023-09-10 17:14:23 浏览: 87
以下是使用OC语言编写的冒泡排序代码:
```
- (NSArray *)bubbleSort:(NSArray *)unsortedArray {
NSMutableArray *sortedArray = [NSMutableArray arrayWithArray:unsortedArray];
NSInteger n = [sortedArray count];
for (NSInteger i = 0; i < n-1; i++) {
for (NSInteger j = 0; j < n-i-1; j++) {
if ([sortedArray[j] compare:sortedArray[j+1]] == NSOrderedDescending) {
[sortedArray exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
}
return [NSArray arrayWithArray:sortedArray];
}
```
在这段代码中,我们首先创建了一个可变数组,以便可以进行交换操作来排序元素。我们使用两个嵌套的循环来遍历数组,并比较相邻的元素以决定它们是否需要交换位置。如果第一个元素大于第二个元素,则交换它们的位置。在完成排序后,我们将可变数组转换为不可变数组并返回。
相关问题
用OC写一个冒泡排序
以下是使用 Objective-C 语言实现冒泡排序的示例代码:
```objc
- (NSArray *)bubbleSort:(NSArray *)unsortedArray {
NSMutableArray *sortedArray = [unsortedArray mutableCopy];
NSInteger count = sortedArray.count;
BOOL swapped = NO;
do {
swapped = NO;
for (NSInteger i = 1; i < count; i++) {
if ([sortedArray[i-1] compare:sortedArray[i]] == NSOrderedDescending) {
[sortedArray exchangeObjectAtIndex:i withObjectAtIndex:i-1];
swapped = YES;
}
}
count--;
} while (swapped);
return sortedArray;
}
```
在这个实现中,我们使用 `NSMutableArray` 来存储输入的未排序数组。我们使用一个布尔变量 `swapped` 来记录在一次遍历中是否有元素交换的操作,如果没有发生任何交换,说明数组已经排序完成,排序过程可以结束。
在每一次遍历中,我们比较相邻的两个元素,如果它们的顺序不正确(按升序排列),就交换它们的位置,并将 `swapped` 标记为 `YES`。当一次遍历结束后,我们减少待比较的元素的个数 `count`,因为在上一次遍历中,最后的 `count` 个元素已经排序好了。
最终,我们将排序好的 `NSMutableArray` 转换为 `NSArray` 并返回。
写一个oc语言的冒泡排序
下面是OC语言的冒泡排序实现代码:
```
- (void)bubbleSort:(NSMutableArray *)array {
for (int i = 0; i < array.count - 1; i++) {
for (int j = 0; j < array.count - 1 - i; j++) {
if ([array[j] compare:array[j+1]] == NSOrderedDescending) {
[array exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
}
}
```
以上代码中,我们使用了NSMutableArray来存储待排序的数据。冒泡排序的基本思路是,从第一个元素开始,比较相邻的两个元素大小,如果前一个元素比后一个元素大,就交换它们的位置。这样一轮比较之后,最大的元素就被移动到了最后一个位置。接着从第一个元素开始,重复上述过程,直到所有元素都排好序为止。
在OC中,我们可以使用`compare:`方法来比较两个元素的大小。如果前一个元素比后一个元素大,`compare:`方法会返回`NSOrderedDescending`,此时我们就需要交换它们的位置。交换两个元素的位置可以使用`exchangeObjectAtIndex:withObjectAtIndex:`方法。
阅读全文