输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分 //第一种方法: #include <stdio.h> void reverse(int *p,int len) { int *start = p; int *end = p + len - 1; int tmp = 0; while (start < end) { if ((*start) % 2 == 1) { start++; } else { if ((*end % 2 == 0)) { end--; } else { tmp = *start; *start = *end; *end = tmp; } } } } int main() { int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int len = sizeof(arr) / sizeof(arr[0]); reverse(arr,len); int i = 0; for (i = 0; i < 10; i++) { printf("%d ", arr[i]); } return 0; } //第二种方法: #include <stdio.h> void swap(int *pa, int*pb) { int tmp = *pa; *pa = *pb; *pb = tmp; } int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int left = 0; int right = sizeof(arr) / sizeof(arr[0])-1; while (left < right) { while ((left < right) && (arr[left] % 2 == 1)) { left++; } while ((left < right) && (arr[right] % 2 == 0)) { right--; } if (left < right) { swap(&arr[left], &arr[right]); left++; right--; } } int i = 0; for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。