《数据结构》,设计将数组A[1][n]中所有奇数移到偶数之前的算法,不另外增加存储空间,时间复杂度为o(n)

作者&投稿:凌泪 (若有异议请与网页底部的电邮联系)
设计将数组A[1…n]中所有奇数移到偶数之前的算法,要求不另外增加存储空间,各位帮忙啊!我给很多分的~

#include
#define size 10
#define ok 1
typedef int status;
typedef int zu[size];
status ShuRu(zu a,int k)
{int i=0;
for(;i<k;i++)
scanf("%d",&a[i]);
return ok;
}
status PaiXu(zu a,int k)
{int i=0,j=k,p;
while(i<=j)
{if((a[i]%2==0)&&(a[j]%2==0))j--;
if((a[i]%2!=0)&&(a[j]%2==0)){i++;j--;}
if((a[i]%2==0)&&(a[j]%2!=0)){p=*(a+i);*(a+i)=*(a+j);*(a+j)=p;}
if((a[i]%2!=0)&&(a[j]%2!=0))i++;
}
return ok;
}
status print(zu a,int k)
{int i=0;
for(;i<k;i++)
printf("%d",a[i]);
return ok;
}
void main()
{int c;
zu b;
printf("GeShu:
");
scanf("%d",&c);
printf("ShuZu:
");
ShuRu(b,c);
PaiXu(b,c);
printf("ShuChu:
");
print(b,c);
}

我也有这道题 应该是对的

没调过,但大部分帮你改过来了,应该没大错误了,你稍微看看应该能搞定了!话说,你写的代码真的很难读,得注意。还有尽量不要传递引用,改用指针。and申请了内存用完要释放!!!
#include
#include
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int ElemType
#define OK 0
#define OVERFLOW 0

typedef struct
{
ElemType * elem;
int listsize;
}SqlList;

int InitList(SqlList &L)
{

L.listsize=LIST_INIT_SIZE;

for(int=0;i<L.listsize;i++)
{
L.elem[i]=i;
}
return OK;
}
int PaiXu(SqlList &L)
{
int i,k,temp;
for(i=0;i<L.listsize/2;i++)
{
if(L.elem[i]%2==0)
{ for(k=L.listsize-1;k>L.listsize/2-1;k--)
{
if(L.elem[k]%2==1)
{
temp=L.elem[i];
L.elem[i]=L.elem[k];
L.elem[k]=temp;
}
}
}
}
return Ok;
}

void DisList(SqlList &L)
{
int i=0;
while(L.elem[i])
{
printf("%n",L.elem[i]);
i++;
}
}

void main()
{
SqlList L;
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)
exit(OVERFLOW);
InitList(L);
PaiXu(L);
DisList(L);
if(L.elem!=NULL)
free(L.elem);

}

A[1][n]不就是A[N]吗,干嘛要这样定义?

给你写个去吃饭吧

算法的复杂度最坏为O(N),没有开辟任何额外的空间,普通变量的定义不算

搞错没有,我的不能运行,程序运行之后,你输入10个数据,用空格隔开,然后回车就行了,难道还要我把数据也全部写在程序中才行.

#include <stdio.h>
#define SIZE 10

void sort(int a[],int n)
{
int i,len,temp;
len=n-1;
for(i=0;i<len;)
{
if(a[i]&0x01==0) //判断是否为偶数
{
temp=a[len];
a[len]=a[i];
a[i]=temp;
len--;
}
else
i++;
}
}
int main()
{
int a[SIZE]={0},i;
for(i=0;i<SIZE;i++)
scanf("%d",&a[i]);
sort(a,SIZE);
for(i=0;i<SIZE;i++)
printf("%-5d",a[i]);
printf("\n");
return 0;
}

#include<stdio.h>

int main() {
   int a[10] = {3,2,1,4,6,9,8,5,12,11};
   int temp;
   int index = 0;
   
   while(a[index]%2 ==0 && index<10) {  //确定数组中第一个奇数的下标
      index++;
   }
   
   for(int i=index+1;i<10;i++) {       
      if(a[i]%2 == 0) {  //确定偶数的位置后与奇数换位置
         temp = a[i];
         a[i] = a[index];
         a[index] = temp;
         while(a[index]%2 ==0 && index <10) {  //同时应该要找到下一个奇数的下标
             index++;
         }   
      }
   }
   
   for(int i=0;i<10;i++) { //打印输出
       printf("%d",a[i]);

   }
}


我是PcrazyC的小号,你把分给他,谢谢合作,我更改次数好像过多了,不能改了,郁闷

不好意思,好像是没有改变,我在处理判断偶数的时候没有考虑到优先级的问题,所以出错了,现在的没问题了,你自己可以看看

算法:
从第一个数开始,如果是偶数,与最后一个数交换,同时将最后一个数排除出去,不用处理了;如果是奇数的话,就继续下一次循环....这样进行下去,直到这个数是应该处理的数的最后一个为止

#include <stdio.h>
#define SIZE 10

void sort(int a[],int n)
{
int i,len,temp;
len=n-1;
for(i=0;i<len;)
{
if((a[i]&0x01)==0) //判断是否为偶数
{
temp=a[len];
a[len]=a[i];
a[i]=temp;
len--;
}
else
i++;
}
}
int main()
{
int a[SIZE]={0},i;
for(i=0;i<SIZE;i++)
scanf("%d",&a[i]);
sort(a,SIZE);
for(i=0;i<SIZE;i++)
printf("%-5d",a[i]);
printf("\n");
return 0;
}

#include <stdio.h>
void move(int a[], int n)
{
int i=0,j=n-1;
while(i<j)
{
if(i<j && a[i]%2!=0) ++i;
while(i<j && a[j]%2==0) --j;
if(i<j)
{
a[i] = a[i]+a[j];
a[j] = a[i]-a[j];
a[i] = a[i]-a[j];
}
}
}

void main()
{
int a[3][11] = {{0},{23,34,12,45,34,56,767,545,345,4,547},{0}};
int i;
printf("Befroe moving: ");
for(i=0; i<11; ++i)
{
printf("%d ", a[1][i]);
}
move(a[1], 11);
printf("\n");
printf("After moving: ");
for(i=0; i<11; ++i)
{
printf("%d ", a[1][i]);
}
printf("\n");
}

int p =0;
int tem;
fro(int i=0;i<n;i++)//n为数组的长度
{
if( 。。。)//判断是否为偶数
{
if(i>p)
{
tem=a[i];
a[i]=a[p];
a[p]=tem;
}
p++;
}
}

要自己在改改


数据结构最快几天学会
离散数学是处理的是离散(非连续的)的数据,站在数据结构的观点上来看,也可以理解是一种非连续数据的结构。 2数据结构和程序设计语言 数据结构和程序设计语言本身没有任何联系,唯一有的关系就实用程序语言去描述数据结构。 因为数据结构是一种抽象数据,通过程序设计语言可以将在计算机中进行实现。今天...

计算机名词解释,:数据结构!
Clifford A.Shaffer 在《数据结构与算法分析》一书中的定义是:“数据结构是 ADT(抽象数据类型 Abstract Data Type) 的物理实现。”Lobert L.Kruse 在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构...

数据结构课程设计,有向图,C语言高手进
已编译确认:\/* 图的深度优先遍历 *\/ include <stdlib.h> include <stdio.h> include <conio.h> struct node \/* 图顶点结构定义 *\/ { int vertex; \/* 顶点数据信息 *\/ struct node *nextnode; \/* 指下一顶点的指标 *\/ };typedef struct node *graph; \/* 图形的结构新型态 *\/ struct...

移动应用技术与服务专业学什么
《操作系统基础》是一门计算机专业基础课,它的先导课程有:《程序设计基础》、《计算机原理》(或《微机原理》)、《数据结构》等课程。它的主要内容是讲操作系统的构造原理、每个模块应完成的功能,以及实现这些功能常用的方法。学完这门课程可以使本专业的学生能够更清楚的了解到计算机内部如何将用户的作业...

数据结构与数据类型有什么区别?
数据类型,即数据元,与数据结构的主要区别如下:一、性质不同 1、数据结构:是计算机存储、组织数据的方式;指相互之间存在一种或多种特定关系的数据元素的集合。2、数据元:是用一组属性描述其定义、标识、表示和允许值的数据单元。二、作用不同 1、数据结构:通常情况下,精心选择的数据结构可以带来...

数据结构课程设计(学生证管理程序)
请设计一个学生证的管理程序,该程序应该具有下列功能:(1) 通过键盘输入某位学生的学生证信息。学生证包含的信息请参看自己的学生证;【题目要求】(1) 存储结构采用顺序表或链表;(2) 用本学期所学算法实现各模块;(3) 主函数设计一个菜单,通过菜单进入各模块测试。要求用数据结构(c语言...

数据结构c语言版的 课程设计
设计题目有:停车场管理系统,哈夫曼编\/译码器,一元稀疏多项式.望各位高手指点一下,可加分!!!... 设计题目有:停车场管理系统,哈夫曼编\/译码器,一元稀疏...但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个...

先学《计算机算法设计与分析》还是《数据结构》?
作为一门交叉学科,当然是学的越多越好。但你不妨同事学习,并没有很固定的顺序。计算机专业的学习内容有计算机应用基础、应用文写作、数学、英语、德育、电工与电子技术、计算机网络技术、C语言、计算机组装与维修、企业网安全高级技术、企业网综合管理、局域网组建、Linux服务器操作系统、网络设备与网络技术...

求一份数据结构课程设计报告
}你的要求太多 , 没仔细看, 我把我给别人写的赋值给你吧 , 我已经写的很全了,程序有问题可以给我留言 本回答被提问者采纳 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 其他类似问题 2013-06-28 求一份学生管理系统课程设计报告,数据结构课程设计 2010-06-18 数据结构课程设计分析报告 4 2020...

软件技术专业的主要课程是什么?
《C语言程序设计》、《数据结构》、《数据库基础》、《网页设计与制作》、《SQL Server》、《Oracle数据库》、《动态网站编程》、《Java程序设计》、《Java Web应用开发》、《.Net应用开发》。软件技术主要研究软件开发、移动编程技术等方面基本知识和技能,进行系统软件开发、软件测试、系统维护等。例如:...

泾川县13290457159: 《数据结构》,设计将数组A[1][n]中所有奇数移到偶数之前的算法,不另外增加存储空间,时间复杂度为o(n) -
芝贷易路: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27#include<stdio.h>intmain() {inta[10] = {3,2,1,4,6,9,8,5,12,11};inttemp;intindex = 0; while(a[index]%2 ==0 && index<10) { //确定数组抄中第一个奇数袭的下标2113index...

泾川县13290457159: 数据结构/C语言: [实验内容] 有一个整形数组a,其中含有n个元素,设计尽可能好的算法求 -
芝贷易路: #include<stdio.h> void max1max2(int A[],int n,int &max1,int &max2) { int i;max1=max2=-32768;for (i=0;i<n;i++)if (A[i]>max1){max2=max1;max1=A[i];} }

泾川县13290457159: 数据结构(c语言版)题目: 把一组数组(76.38.62.53.80.74.83.65.85)进行 -
芝贷易路: #includevoid shift(int a[] , int i , int m) { int k , t; t = a[i]; k = 2 * i + 1; while (k < m) { if ((k < m - 1) && (a[k] < a[k+1])) k ++; if (t < a[k]) {a[i] = a[k]; i = k; k = 2 * i + 1;} else break; } a[i] = t; } void heap(int a[] , int n) //a 为排序数组,n为数组大小(编号0-n-1) ...

泾川县13290457159: 数据结构中数组元素的起始地址和存储地址有什么区别? -
芝贷易路: (1)数组A的存储量为6*8*6=288字节 (2)按行优先存放时,元素A1,4的起始地址、存储地址:1000+(1*8+4)*6=1072 (3)按列优先存放时,元素A4,7的起始地址、存储地址:1000+(7*6+4)*6=1276 数组元素的存储地址就是该元素在内存的起始地址

泾川县13290457159: 数据结构:数组A[1..5,1..6]的基地址为1000,每个元素占5个存储,元素A[5,5]地址 -
芝贷易路:如图

泾川县13290457159: 数据结构 和算法关于数据结构算法的问题 根据下面的规则数列元素A[0],A[1].A[数据结构 和算法关于数据结构算法的问题根据下面的规则数列元素A[0],A[1].A[9... -
芝贷易路:[答案] 这个是哈希冲突再散列的东西,26对10取余数是6,在6号空间,43在3号空间,63发生冲突,改为加一取余数,在4号空间.... [0]__[1]__[2]__[3]_43_[4]_63_[5]_24_[6]_26_[7]__[8]__[9]_85_ 其他空白数组元素都是零就不写了.

泾川县13290457159: 设计将数组A[1…n]中所有奇数移到偶数之前的算法,要求不另外增加存储空间,各位帮忙啊!我给很多分的 -
芝贷易路: #include <stdio.h>#define size 10#define ok 1 typedef int status; typedef int zu[size]; status ShuRu(zu a,int k) {int i=0; for(;i<k;i++) scanf("%d",&a[i]); return ok; } status PaiXu(zu a,int k) {int i=0,j=k,p; while(i<=j) {if((a[i]%2==0)&&(a[j]%2==0))j--; if((a[i]...

泾川县13290457159: 数据结构 数组
芝贷易路: 1.2048+[(j-1)*60+i-1]*2=2048+[(58-1)*60+32-1]*2=8950 2.1000+[(18-10)*(10-5+1)+9-5] *4=12081中的i,j分别是数组的两个下标,如a[i,j]; 2中简化没再用i,j.

泾川县13290457159: 数据结构作业
芝贷易路: for(i=0; i<n; i++)for(j=i; j<n-1: j++)a[i][j] = a[i][j+1]

泾川县13290457159: !!!高分求数据题目的答案!!! -
芝贷易路: 一1. 数据项7. 题目错了吧..应该是前缀-+a*bcd 后缀的话应该是abc*+d-8. 65 15 30 二1. 数据的物理(存储)结构2. 数据元素的个数3. 后进先出5. 2^5-1=31 呃...下班了..约会去咯

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网