1,2,3,4,用冒泡排序法,折半查找法等方法求它们的具体解答过程
发布网友
发布时间:2023-07-18 12:13
我来回答
共1个回答
热心网友
时间:2023-09-04 10:27
折半查找是1.给一个定值key与中间位置记录的关键字进行比较,若相等则查找成功2.若不相等则利用中间位置记录将表对分成前后俩子表,若key比中间位置记录的关键字小,则下一次只在前一子表中继续查找,否则在后一子表中继续查找3.重复1.2,将查找区间不断对分,直到查找成功,或者当前查找区间为空,查找失败。
冒泡排序1.设待排序的记录放在数组r〔1,n〕中。首先将第一二个记录的关键字进行比较,若一大于二,则交换两个记录,然后比较二三,以此类推,直到第n-1个记录和第n个记录的关键字进行比较为止,这是第一趟排序2.进行第二趟排序,对前n-1个记录进行同样的操作,其结果是是关键字次大的记录被安置到第n-1个记录的位置上3.重复上述比较和交换过程,第i趟是从r〔1〕到r〔n-i+1〕依次比较相邻两个记录的关键字,并在逆序时交换相邻记录,直到在某一趟排序过程中没有进行过交换记录的操作,说明序列已经全部达到排序要求,则完成排序。
排序过程:首先将95.6与92.3比较,92.3<95.6,所以两数交换位置,再将第二个位置的95.6与第三个位置的81.4进行比较,81.4<95.6两数交换,依次类推,将小数放在前面,第一趟排序之后最大的分数98.4必定会在最后一个位置;按照这样的方法再对除了98.4以外的前面那些分数进行排序,第二趟结束后,第二大分数95.6就会在倒数第二的位置,再进行第三趟排序。。。直到所有分数由低到高排好。
查找过程:假设输入的成绩为92.3,此时表已排好序,分别是:79.8 81.4 82.1 86.5 88.7 88.9 92.3 93.2 95.6 98.4首先将92.3与此表中间的数88.7进行比较,92.3大,所以只在88.7后面那些数字中再进行折半查找,后面子表中间位置的数是93.2,而93.2>92.3,所以在此前面的子表进行比较,也就是88.9 92.3这一子表,此时中间位置即为88.9,小于92.3,而现在表中只有92.3,相等,查找成功。。。没有表示指针移动情况,感觉这样比较易懂