将整型数组划分为左右两部分,使左边全为奇数,右边全为偶数.
2013-05-31 23:17
337 查看
原题:已知数组array[1:n-1]的元素类型为int,设计算法将其调整为左右两部分,左边所有元素为奇数,右边所有元素为偶数,并要求算法的时间复杂度为O(n)。
以下程序自动生成数组,然后调用void adjust()函数进行调整。
以下程序自动生成数组,然后调用void adjust()函数进行调整。
#include<stdio.h> #include<time.h> #include<stdlib.h> #define SIZE 10 void adjust(int array[],int n); //调整数组元素的函数声明 void main() { int array[SIZE],i; srand(time(NULL)); //获取随机种子 for(i=0;i<SIZE;i++) //为数组元素赋值,以生成数组 { array[i]=rand()%100+1; } printf("Before adjust array,the array's elements are:\n"); for(i=0;i<SIZE;i++) { printf("%d ",array[i]); } printf("\n"); adjust(array,SIZE); //调用调整数组元素的函数 printf("After adjust array,the array's elements are:\n"); for(i=0;i<SIZE;i++) { printf("%d ",array[i]); } printf("\n"); } void adjust(int array[],int n) //调整数组元素的函数的定义 { int i=0,j=n-1,temp; while(i<j) { while(array[i]%2!=0)i++; while(array[j]%2==0)j--; if(i<j) { temp=array[i]; array[i]=array[j]; array[j]=temp; } } }
相关文章推荐
- 利用顺序表调整其为左右两部分,左边的为奇数,右边的为偶数
- 把一个数组划分成左边奇数右边偶数
- 仅用O(1)的空间,将整数数组按奇偶数分成2部分,数组左边是奇数、右边是偶数
- 重新排列数组使得数组左边为奇数,右边为偶数--方法三
- 算法设计:将一个数组分为奇数、偶数左右两个部分,要求时间复杂度为O(n)
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 程序员面试题目总结--数组(四)【数列中符合条件数对的个数、数组是否存在重复元素、重新排列数组使数组左边为奇数,右边为偶数、数组中的第二大数、数组中的最小值和最大值】
- 编程: 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
- 重新排列数组使得数组左边为奇数,右边为偶数
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 百度笔试:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)
- 【每天一道算法题】给定一个存放整数的数组,要求数组左边为奇数,右边为偶数
- 剑指offer11--让数组变成左边奇数右边偶数
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 83.第 3 组百度面试题 数组使得数组左边为奇数,右边为偶数
- 4.给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
- 输入一个整型数组,实现一个函数,来调整数组中的数字顺序是的数组中所有的奇数位于数组前半部分,所有偶数位于数组的后半部分。
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数