摘要:希賽網5月10日-11日舉行了2025上半年程序員第二期模考活動,現將2025上半年程序員第二期模考試卷(應用技術)分享給大家。有需要的同學可以在本文資料處下載模考試卷的PDF版本。
希賽網2025上半年程序員第二期模考活動已結束,現將2025上半年程序員第二期模考試卷(應用技術)分享給大家。模考試卷PDF版本可在本文文首本文資料處或文末的資料下載欄目下載。
2025上半年程序員第二期模考試卷(應用技術)部分試題如下:
1、
N有有序整數數組存放在a中,利用二分查找法查找整數key在數組中的位置,若找到,則輸出其值和對應的下標,反之,則輸出“Not be found!”
二分查找的基本思想是:將表中間位置記錄的關鍵字與查找關鍵字比較,如果兩者相等,則查找成功;否則利用中間位置記錄將表分成前、后兩個子表,如果中間位置記錄的關鍵字大于查找關鍵字,則進一步查找前一子表,否則進一步查找后一子表。重復以上過程,直到找到滿足條件的記錄,使查找成功,或直到子表不存在為止,此時查找不成功。
問題內容:請完成下列流程圖,使該流程圖實現二分查找。
【流程圖】
試題答案:
(1)N-1
(2)high=nid-1
(3)key>a[mid]
(4)low=mid+1
(5)k=mid
(6)k>=0
最終流程圖如下圖所示:
2、
用快速排序中的劃分思想進行實現如下功能:在n個元素的整型數組中,確定其第i(1≤i≤n)小的數。
具體算法如下:
首先以第一個數為基準,進行快速排序。快速排序后,會以基準值為界,左側的元素都比基準值要小,右側的元素比基準值大。且排序完成后可以確定基準值是排在第k位,判斷k與i的關系,如果i<k則下次只需對快速排序結果中排在基準值左側的進行下一次遞歸;如果k=i,表示剛好查找到第i小的元素;如果i>k則下次只需對快速排序結果中排在基準值右側的進行下一次遞歸。C代碼實現如下(請將空白區域代碼補充完整)。
【C代碼】
#include <stdio.h>
#include<stdlib.h>
int partition(int *a,int low,int high)
{//以第一個為基準,利用快速排序找到它排序后所對應的下標
int pivot=a[low];
while(low<high)
{
while(low<high&&a[high]>=pivot)
high--;
a[low]=a[high];
while(low<high&&a[low]<=pivot)
low++;
a[high]=a[low];
}
a[low]=pivot;
return low;
}
int select(int *a,int low,int high,int i)
{//select函數實現查找a數組中,從low~high范圍內找第i個最小值
if(low==high)
return ( 1 );//當只含有一個元素值,返回這個值
int pivot= partition(a,low,high);//通過快速排序查找第一個元素的下標位置
int k= ( 2 );//確定第一個元素值從小到大排第幾
if(k==i)
return ( 3 );//剛好一致時,返回對應元素值
else if(i<k )
return ( 4 ); //i<k時,用遞歸找其左側范圍內第i個最小值
else
return ( 5 ); //反之,用遞歸找其右側范圍內第i個最小值
}
int main()
{
int a[]={1,34,5,16,37,28,9,13,26};
int result= select(a,0,sizeof(a)/sizeof(int)-1,2);
printf("%d\n",result);
return 0;
}
問題內容:
試題答案:
(1)a[low]或者a[high]
(2)pivot-low+1
(3)a[pivot]
(4)select(a,low,pivot-1,i)
(5)select(a,pivot+1,high,i-k)
軟考科目怎么選?
微信掃碼下方二維碼找答案
▼ ▼ ▼
熱門:系統集成項目管理工程師備考 | 2025下半年軟考高級選科
推薦:系統規劃與管理師網絡課堂 | 2025下半年軟考報名時間及入口
課程:系統規劃與管理師報考指南 | PMP課程 | 25下半年系統集成備考經驗
軟考備考資料免費領取
去領取