1、題目中要求矩陣兩行元素的平均值按遞增順序排序,由於每行元素個數相等,按平均值排列與按每行元素之和排列是乙個意思。所以應先求出各行元素之和,放入一維陣列中,然後選擇一種排序方法,對該陣列進行排序,注意在排序時若有元素移動,則與之相應的行中各元素也必須做相應變動。
void translation(float *matrix,int n)
//本演算法對n×n的矩陣matrix,通過行變換,使其各行元素的平均值按遞增排列。
//for i
for(i=0; i
sum=p[i]; p[i]=p[k]; p[k]=sum; //交換一維陣列中元素之和.
}//if
}//for i
free(p); //釋放p陣列.
}// translation
[演算法分析] 演算法中使用選擇法排序,比較次數較多,但資料交換(移動)較少.若用其它排序方法,雖可減少比較次數,但資料移動會增多.演算法時間複雜度為o(n2).
2、設有一組初始記錄關鍵字序列(k1,k2,…,kn),要求設計乙個演算法能夠在o(n)的時間複雜度內將線性表劃分成兩部分,其中左半部分的每個關鍵字均小於ki,右半部分的每個關鍵字均大於等於ki。
void quickpass(int r, int s, int t)
r[i]=x;
}3、根據二叉排序樹中序遍歷所得結點值為增序的性質,在遍歷中將當前遍歷結點與其前驅結
點值比較,即可得出結論,為此設全域性指標變數pre(初值為null)和全域性變數flag,初值為true。若非二叉排序樹,則置flag為false。
#define true 1
#define false 0
typedef struct node
*btree;
void judgebst(btree t,int flag)
// 判斷二叉樹是否是二叉排序樹,本演算法結束後,在呼叫程式中由flag得出結論。
//不是完全二叉樹
judgebst (t->rlink,flag);// 中序遍歷右子樹
}//judgebst演算法結束
2023年廣東省資料總結高階
1 二部圖 bipartite graph g v,e 是乙個能將其結點集v分為兩不相交子集v 1和v2 v v1的無向圖,使得 v1中的任何兩個結點在圖g中均不相鄰,v2中的任何結點在圖g中也均不相鄰。1 請各舉乙個結點個數為5的二部圖和非二部圖的例子。2 請用c或pascal編寫乙個函式bipa...
2023年廣東省資料總結基礎
1 設指標變數p指向雙向鍊錶中結點a,指標變數q指向被插入結點b,要求給出在結點a 的後面插入結點b的操作序列 設雙向鍊錶中結點的兩個指標域分別為llink和rlink 2 已知有向圖g v,e 其中v e 寫出g的拓撲排序的結果。g拓撲排序的結果是 v1 v2 v4 v3 v5 v6 v7 3 由...
2023年廣東省資料總結基礎
1 對二叉樹的某層上的結點進行運算,採用佇列結構按層次遍歷最適宜。int leafklevel bitree bt,int k 求二叉樹bt 的第k k 1 層上葉子結點個數 last移到指向下層最右一元素 if level k return leaf層數大於k 後退出執行 while 結束leaf...