话说用OC来写排序算法,其实基本上是使用不到的。因为OC底层已经提供了一些现成的经优化过的排序算法。
这里只是为了用OC来实现,并说明一下其中使用的一个BOOl isFinished可以有效地优化排序算法,降低时间复杂度。
typedef struct JJListNode {
NSInteger data;
struct JJListNode *next;
}listMdeg;
- (void)sortList:(listMdeg *)headFr {
BOOL isFinished = YES;
for (listMdeg *q = headFr; q->next != nil; q=q->next) {
listMdeg *p = q->next;
for (listMdeg *r = q; p != nil; p=p->next, r=r->next) {
if (p->data < r->data) {
NSInteger m = p->data;
p->data = r->data;
r->data = m;
isFinished = NO;
}
}
if (isFinished == YES) {
break;
}
}
}