void mergeSortList(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++];
}
i++;
}
while (p < aLen) {
result[i++] = a[p++];
}
while (q < bLen) {
result[i++] = b[q++];
}
}
-(void) mergeSortList{
int a[5] = {1,3,6,7,9};
int b[8] = {2,4,6,7,10,11,12,13};
int result[13];
mergeSortList(a, 5, b, 8, result);
for (int i=0; i<13; i++) {
printf("%d ",result[i]);
}
}
7. 哈希查找.查找字符串中第一个只出现一次的字符
char findFirstOnceChar(char * cha){
char result = '\0';
int arr[256];
for (int i =0; i<256; i++) {
arr[i] = 0;
}
char *p = cha;
while (*p != '\0') {
arr[*(p++)]++;
}
p = cha;
while (*p != '\0') {
if (arr[*p] == 1) {
result = *p;
break;
}
p++;
}
return result;
}
-(void) findFirstOneTimeChar{
char cha[] = "ababscskjaglkjagkajklaf";
char result = findFirstOnceChar(cha);
printf("the result is %c \n",result);
}
8. 查找无序数组中位数
int findMedian(int a[],int aLen){
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,low,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;
}
-(void) findMedian{
int a[9] = {12,3,10,8,6,7,11,13,9};
// int a[5] = {3,4,6,2,5};
int res = findMedian(a, 9);
printf("result is %d",res);
}
9. 快速排序 c语言
void quickSort(int a[],int left,int right){
if (left >= right){
return;
}
int i = left;
int j = right;
int key = a[left];
while (i < j) {
while (i < j && a[j] >= key) {
j--;
}
a[i] = a[j];
while (i < j && a[i] <= key) {
i++;
}
a[j] = a[i];
}
a[i] = key;
// for (int i=0; i< 9; i++) {
// printf("%d ",a[i]);
// }
// printf("\n-------------\n");
quickSort(a,left,i-1);
quickSort(a,i+1,right);
}
10.冒泡排序
for (NSInteger i = 0; i < arr.count -1; i++) {
for (NSInteger j = 0; j < arr.count -1 -i; j++) {
if ([arr[j] integerValue] < [arr[j+1] integerValue]) {
NSInteger tmp = [arr[j] integerValue];
arr[j] = arr[j+1];
arr[j+1] = @(tmp);
}
}
}
11.选择排序
for (NSInteger i = 0; i < arr.count -1; i++) {
for (NSInteger j = i +1; j < arr.count; j++) {
if ([arr[j] integerValue] < [arr[i] integerValue]) {
NSNumber * temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}