void char_reverse(char *cha) {
if (strlen(cha) ==0 ) return;
char *begin = cha;
char *end = cha + strlen(cha) -1;
while (begin <end) {
char temp = *begin;
*(begin++) = *end;
*(end--) = temp;
}
}
void mergeList(int a[], int aLen ,int b[], int bLen, int result[]) {
int p =0;
int q =0;
int i =0;
while (p< aLen && q< bLen) {
if (a[p]<= b[q]) {
result[i++] = a[p++];
} else {
result[i++] = b[q++];
}
}
while (q<bLen) {
result[i++] = b[q++];
}
while (p<bLen) {
result[i++] = a[p++];
}
}
-(NSArray <UIView *>*)findSuperViews:(UIView *)view {
NSMutableArray * result = [NSMutableArray array];
UIView * temp = view.superview;
while (temp) {
[result addObject:temp];
temp = temp.superview;
}
return result;
}
- (NSArray <UIView *> *)findCommonSuperView:(UIView *)view other:(UIView *)viewOther {
NSMutableArray *result = [NSMutableArray array];
NSArray *arrayOne = [self findSuperViews:view];
NSArray *arrayTwo = [self findSuperViews:viewOther];
int i = 0;
while (i< MIN(arrayOne.count, arrayTwo.count) ) {
UIView *superOne = arrayOne[arrayOne.count - i -1];
UIView *superTwo = arrayTwo[arrayTwo.count - i -1];
if (superOne == superTwo) {
[result addObject:superOne];
i++;
}else {
break;
}
}
return result;
}
int findMiedian(int a[], int aLen) {
if (aLen <1) {
return 0;
}
int low =0;
int high = aLen -1;
int mid = (aLen -1)/2;
int div = partSort(a, low, high);
while (div != mid) {
if (mid<div) {
div = partSort(a, 0, div-1);
} else {
div = partSort(a, div+1, high);
}
}
return a[mid];
}
int partSort(int a[], int start, int end) {
int low = start;
int high = end;
int key = a[end];
while (low <high) {
while (low<high && a[low] <= key) {
low++;
}
while (low<high && a[high] >= key) {
high--;
}
if (low <high) {
int temp = a[low];
a[low] = a[high];
a[high] = temp;
}
}
int temp = a[high];
a[high] = a[end];
a[end] = temp;
return low;
}