王老师:19139051760(微信同号)  13333709510
联大   青书学堂   文才   和学   现代兴业   安徽教育在线   超星   弘成   广东开放大学   国家开放大学   上海开放大学   含弘慕课 

教育服务

成人高校
成考录取分数线
我要提升学历
提升学历的理由:
升职加薪、积分落户、考研、公务员考试、子女入学、出国留学


成人高考报名入口

当前位置: 首页 > 联大系统 > 太原理工大学> 河南理工大学数据结构
 

输入试题:
本题添加时间:2023/4/3 12:59:00
圆梦客服:王老师  19139051760(微信同号)  19139051760(微信同号)
设有顺序放置的n个桶,每个桶中装有一粒砾石,每粒砾石的颜色是红,白,蓝之一。要求重新安排这些砾石,使得所有红色砾石在前,所有白色砾石居中,所有蓝色砾石居后,重新安排时对每粒砾石的颜色只能看一次,并且只允许交换操作来调整砾石的位置。

答案是:void QkSort(rectype r[],int n) { // r为含有n个元素的线性表,元素是具有红、白和兰色的砾石,用顺序存储结构存储, //本算法对其排序,使所有红色砾石在前,白色居中,兰色在最后。 int i=1,j=1,k=n,temp; while (k!=j){ while (r[k].key==3) k--;// 当前元素是兰色砾石,指针左移 if (r[k].key==1) // 当前元素是红色砾石 if (i>=j){temp=r[k];r[k]=r[i];r[i]=temp; i++;} //左侧只有红色砾石,交换r[k]和r[i] else {temp=r[j];r[j]=r[i];r[i]=temp; j++; //左侧已有红色和白色砾石,先交换白色砾石到位 temp=r[k];r[k]=r[i];r[i]=temp; i++; //白色砾石(i所指)和待定砾石(j所指) } //再交换r[k]和r[i],使红色砾石入位。 if (r[k].key==2) if (i<=j) { temp=r[k];r[k]=r[j];r[j]=temp; j++;} // 左侧已有白色砾石,交换r[k]和r[j] else { temp=r[k];r[k]=r[i];r[i]=temp; j=i+1;} //i、j分别指向红、白色砾石的后一位置 }//while if (r[k]==2) j++; /* 处理最后一粒砾石 else if (r[k]==1) { temp=r[j];r[j]=r[i];r[i]=temp; i++; j++; } //最后红、白、兰色砾石的个数分别为: i-1;j-i;n-j+1 }//结束QkSor算法


出自 河南理工大学数据结构  联大系统

太原理工大学

更多试题>>>>
1、有n个记录存储在带头结点的双向链表中,现用双向冒泡排序法对其按上升序进行排序,请写出这种排序的算法。(注:双向冒泡排序即相邻两趟排序向相反方向冒泡)。
2、试以单链表为存储结构,实现简单选择排序算法
3、对22个记录的有序表作折半查找,查找失败时,至少需要比较___个关键字。
4、m阶B-树的非叶结点至少有m/2 (m为偶数)或m/2+1(m为奇数)棵子树。 A.正确 B.错误
5、分别写出在散列表中插入和删除关键字为K的一个记录的算法,设散列函数为H,解决冲突的方法为链地址法。


提升学历-成人高考报名入口 提升学历-成人高考院校名单