王老师: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,解决冲突的方法为链地址法。
提升学历-成人高考报名入口
提升学历-成人高考院校名单