写一函数,调整数组使奇数全部都位于偶数前面

调整数组使奇数全部都位于偶数前面。
 输入一个整数数组,实现一个函数,
 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
 所有偶数位于数组的后半部分。

 1 #include<stdio.h>
 2
 3 #define NUM 10
 4
 5 void Change_num(int* start, int* end)
 6 {
 7     //开头找偶数,结尾找奇数,找到后两个相互交换位置
 8     //1,2,3,4,5,6,7,8,9,5
 9     //1, 3, 5, 4, 5, 6, 7, 8, 9, 2
10     while (start < end)
11     {
12         if ((*start) % 2 == 0 )
13         {
14             if ((*end) % 2 != 0)
15             {
16                 int temp = 0;
17                 temp = *start;
18                 *start = *end;
19                 *end = temp;
20             }
21             else
22             {
23                 --end;
24             }
25         }
26         else
27         {
28             ++start;
29         }
30     }
31 }
32
33 int main()
34 {
35     int arr[NUM];
36     printf("请输入未改变顺序前的10个数:\n");
37     for (int i = 0;i < NUM;++i)
38     {
39         scanf("%d", &arr[i]);
40     }
41     printf("\n");
42     //改变奇数与偶数的顺序
43     int* start = arr;
44     int* end = arr + sizeof(arr) / sizeof(arr[0]) - 1;
45     printf("改变顺序之后:\n");
46     Change_num(start, end);
47     for (int i = 0;i < NUM;++i)
48     {
49         printf("%d ", arr[i]);
50     }
51     return 0;
52 }

原文地址:https://www.cnblogs.com/cuckoo-/p/10381204.html

时间: 2024-07-28 21:23:10

写一函数,调整数组使奇数全部都位于偶数前面的相关文章

【C语言】调整数组使奇数所有都位于偶数前面

//调整数组使奇数全部都位于偶数前面. //输入一个整数数组.实现一个函数.来调整该数组中数字的顺序使得数组中全部的奇数位于数组的前半部分,全部偶数位于数组的后半部分 #include <stdio.h> void Adjust(int arr[],int len) { int i, j; for (i = 0; i < len; i++) { if ((arr[i]%2)==0) for (j = i + 1; j < len; j++) { int temp; if ((arr

【c语言】调整数组使奇数全部都位于偶数前面

// 调整数组使奇数全部都位于偶数前面 // 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, // 所有偶数位于数组的后半部分. #include <stdio.h> #include <assert.h> void johh(int *p, int len) { int *q = p + len - 1; int temp; assert(p != NULL); while (p < q) { while ((*p &

C语言编程 调整数组使奇数全部都位于偶数前面

题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分. 主要思想:遍历这个数列,若遍历到的数字为奇数,则再次遍历数列找到第一个偶数与其交换位置. 源代码: #include<stdio.h> #include<stdlib.h> void Exchange(int array[],int length) { int i,m,temp; for (i = 0; i < length; i++) { if

调整数组使奇数全部都位于偶数前面

#include<stdio.h> void sort(int *p, int len) { int *end = p; end = p + len - 1; while (p<end) { if (*p % 2 == 0) { while (end) { if (*end % 2 == 1) { break; } end--; } int tmp = *end; *end = *p; *p = tmp; p++; } else { p++; } } } int main() { int

调整数组使奇数全部都位于偶数前面。

#include<stdio.h> #include<assert.h> void ReorderOddEven(int arry[], int size) { assert(arry); if (arry == NULL || size <= 0) { return; } int begin = 0; int temp = 0; int end = size - 1; while (begin<end) { while (begin<end &&

C语言:调整数组使奇数全部都位于偶数前面。

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h> void even_old_number(int *arr, int len) {      assert(arr);      int i = 0;      int j = 0;      int tmp = 0;      for (i = 0; i < len; i++)    

剑指Offer之调整数组使奇数位于偶数前面(题14)

1 /****************************************                                                                                                    2     > File Name:test.c   3     > Author:xiaoxiaohui   4     > mail:[email protected]   5     > Cre

调整数组使奇数位于偶数前面

如果考虑暴力解决的话,就每次从前往后扫面,遇到偶数就放在最后,这样时间复杂度就是O(n*n),对于这种问题明显过高了,我们考虑扫描一遍,用两个指针,一个从前往后,另一个从后往前,碰到前偶后奇的时候就交换,这样算法复杂度只有O(n). #include<stdio.h> #include<stdlib.h> void reset(int a[],int n) { int i=0,j=n-1,tmp=0; while(i<j) { if((a[i]%2==1)&&

写一个函数实现数组中的元素随机乱序排序

//原生JS写一个函数实现一个shuffle方法,将数组中的元素随机乱序排序 var shuffle = function(arr){ var len,t,rand; for(var i =0;len = arr.length,i<len;i++){ rand = parseInt(Math.random()*len);//parseInt(Math.random()*(len-1-0)+1);或者rand = Math.floor(Math.random()*(len-1-0)+1);即Mat