已知数组A[0:n-1]的元素类型为int,试设计算法将其调整为左右两个部分,左边所有元

要有完整的输入输出哦!
已知数组A[0:n-1]的元素类型为int,试设计算法将其调整为左右两个部分,左边所有元素为奇数,右边所有元素为偶数。
使用C语言,数据结构知识
#include<stdio.h>
#define n 20
void main()
{
int A[n]; //定义一个整型数组
int i=0; //定义一个下标整型变量i并赋初值
int m; //定义一个中间变量m
int j=n;
printf("请输入n个数:"); //输入数据
scanf("%d ",&A[i]);
while(A[j]%2==0) //处理数据
j--;
if(A[i]%2==0) //交换
{
m=A[i];
A[i]=A[j];
A[j]=m;
}
i++;
j--;
printf("处理后的数据为:"); //输出数据
for(i=0;i<n;i++)
printf("%d ",A[i]);
printf("\n");
}

谢谢帮忙!~

第1个回答  推荐于2017-12-15
采用插入排序://也可以用分治法等其他方法
RESOLUTION-SORT(A)//假设为已排序数组所有奇数向左靠拢即可~
for j←1 to lenght[A]
do key←A[j]
i←j-1
while i>0andke=<key and key%2==1
doA[i+1]←A[i]
i←i-1
A[i+1]←key
ke←key
下面是c++程序
#include<iostream>
using namespace std;
int main()
{
const size_t b=20;
int A[b]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
for(int j=1;j<b;++j){
int key,ke,i;
key=A[j];
i=j-1;
while(i>=0&&key>=ke&&(key%2==1)){
A[i+1]=A[i--];
}
A[i+1]=ke=key;
}
for(size_t a=0;a<b;++a)
cout<<A[a]<<endl;
return 0;
}
//我也是初学 弄的不是很好 不过 意思都差不多
//不明白你什么意思 你看看把 你的程序貌似不能循环把~
#include<stdio.h>
#define n 20
void main()//单纯分奇偶
{
int A[n];//用于排序
int m; //定义一个中间变量m
int i=0,j=n-1;
printf("请输入n个数:"); //输入数据
for(size_t ix=0;ix!=n;++ix)
{
scanf("%d",&m);
if(i!=j)
{
if(m%2==1)
{
A[i++]=m;
}else{
A[j--]=m;
}
}else{A[i]=m;}
}
printf("处理后的数据为:"); //输出数据
for(int i=0;i<n;i++)
{ printf("%d ",A[i]); printf("\t");
}
}本回答被提问者采纳

设a[0:n-1]是已排好序的数组.请改写二分搜索算法,使得当被搜索元素x...
include <stdio.h>int main(){int ip[100],n,key,i,mid,lt=0,rt,fg=0;printf("请输入数组长度:");scanf;printf("请输入已排序的数组:");for(i=0;i<n;i++)scanf("%d",ip+i);printf("请输入待查找数:");

设a[0…n-1]是一个n个整数的已排序的数组,x是整数.请设计一个算法来确定...
bool findTwoNumber(int array[], int len, int x){ int low = 0;int high = len - 1;while(low < high){ if ((array[low] + array[high]) > x) \/\/如果和大于x说明当前最大数加上low之后的小数都比x大 high--;else if ((array[low] + array[high]) < x) \/\/如果和小于...

用C 语言将一维整型数组调整为左右两部分,左边所有元素均为奇数,右边...
int a[N],b[N];int i,j=0,k=0;for(i=0;i<N;++i)scanf("%d",&a[i]);for(i=0;i<N;++i)if(a[i]%2==1)a[j++]=a[i];else b[k++]=a[i];for(i=0;j<N;++j)a[j]=b[i++];for(i=0;i<N;++i)printf("%d ",a[i]);return 0;} ...

C语言 对于给定的N各元素的数组[0;N-1],要求从中找出第K小的元素
1 对数组进行从小到大排序,排序方法任意。在排序后,数组的第K个元素即为第K小的元素。2 对于N值较大,K值较小的情况,1中的时间开销偏大。这时可以用额外的空间开销,来换取更高的效率。方法为:a) 开辟一个K个元素的临时空间M;b) 取数组中的第一个元素,置于M中;c) 取第二个元素,插入...

计算机二级ms office高级应用基础知识
性质3:对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。 性质4:具有n个结点的完全二叉树的深度至少为[log2n]+1,其中[log2n]表示log2n的整数部分。 3.满二叉树与完全二叉树 (1)满二叉树:满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。满二叉...

C语言中什么叫算法,算法在程序设计中的重要作用
由于要求的整数可能大大超出一般整数的位数,程序用一维数组存储长整数,存储长整数数组的每个元素只存储长整数的一位数字。如有m位成整数N用数组a[ ]存储: N=a[m]×10m-1+a[m-1]×10m-2+ … +a[2]×101+a[1]×100 并用a[0]存储长整数N的位数m,即a[0]=m。按上述约定,数组的每个元素存储k的...

快速排序算法原理与实现
然后以当前中轴元素的位置为界,将左半部分子数组和右半部分子数组看成两个新的数组,重复上述操作,直到子数组的元素个数小于等于1(因为一个元素的数组必定是有序的)。以下的代码中会常常使用交换数组中两个元素值的Swap方法,其代码如下 public static void Swap(int[] A, int i, int j){ in...

python将时间按多少先后排序正确的是
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。 可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]]=A[i]。 在数组的非降序排序中,需要使用的就是大根堆,因为根据...

C语言中f=f*n表示什么意思
(k=1,2,…,n)的全部有效数字。 由于要求的整数可能大大超出一般整数的位数,程序用一维数组存储长整数,存储长整数数组的每个元素只存储长整数的一位数字。如有m位成整数N用数组a[ ]存储: N=a[m]×10m-1+a[m-1]×10m-2+ … +a[2]×101+a[1]×100 并用a[0]存储长整数N的位数m,即a[0]=m。

求答案,求答案。 若有以下定义和语句,则对a数组元素的正确引用为?
首先有定义:int a[2][3]:这定义了一个二维数组a,它有 2 行 3 列,总共可以存放 2×3 = 6 个int类型的元素。可以把它看作是由两个一维数组组成的数组,每个一维数组有 3 个元素。(*p)[3]:定义了一个指针p,p是指向一个包含 3 个int类型元素的数组的指针。然后p = a,这使得p指向...

相似回答