shell數(shù)組的定義方法分為哪四種 常見(jiàn)的幾種排序算法?
常見(jiàn)的幾種排序算法?首先,冒泡排序一組無(wú)序數(shù)據(jù)a[1],a[2],...已知一個(gè)[n],需要按升序排列。首先,比較a[1]和a[2]的值。如果a[1]大于a[2],則兩者的值交換,否則保持不變。然后比
常見(jiàn)的幾種排序算法?
首先,冒泡排序
一組無(wú)序數(shù)據(jù)a[1],a[2],...已知一個(gè)[n],需要按升序排列。首先,比較a[1]和a[2]的值。如果a[1]大于a[2],則兩者的值交換,否則保持不變。然后比較a[2]和a[3]的值。如果a[2]大于a[3],交換兩者的值,否則保持不變。比較a[3]和a[4],以此類(lèi)推,最后比較a[n-1]和a[n]的值。經(jīng)過(guò)一輪這樣的處理后,a[n]的值必須是這組數(shù)據(jù)中最大的。如果a[1]~a[n- 1]在另一輪中以同樣的處理,a[n- 1]的值一定是a[1]~a[n-1]中最大的。然后a[1]~a[n-2]以同樣的進(jìn)行一輪,以此類(lèi)推。在處理n-1輪之后,a[1],a[2],...A [n]按升序排列。
優(yōu)點(diǎn):穩(wěn)定;
缺點(diǎn):慢,一次只能移動(dòng)兩個(gè)相鄰的數(shù)據(jù)。
第二,選擇排序
每次行程從要排序的數(shù)據(jù)元素中選擇最小(或最大)的元素,順序放在排序后的數(shù)據(jù)序列的末尾,直到所有要排序的數(shù)據(jù)元素都排列好。
選擇性排序是一種不穩(wěn)定的排序方法。
n個(gè)記錄文件的直接選擇排序可以在n-1個(gè)直接選擇排序后得到一個(gè)有序的結(jié)果:
①初始狀態(tài):無(wú)序區(qū)為r [1...n],并且有序區(qū)域是空的。
②在第一次排序中,從無(wú)序區(qū)域R[1]中選擇具有最小關(guān)鍵字的記錄R[k]..n],并且它與無(wú)序區(qū)域中的第一個(gè)記錄R[1]交換,使得R[1..1]和R[2..n]分別變成增加一條記錄的新的有序區(qū)域和減少一條記錄的新的無(wú)序區(qū)域。
③第I次排序
在第I個(gè)排序開(kāi)始時(shí),當(dāng)前有序區(qū)域和無(wú)序區(qū)域是R[1..i-1]和R(1≤i≤n-1)。這個(gè)排序從當(dāng)前無(wú)序區(qū)中選擇關(guān)鍵字最小的記錄R[k],與無(wú)序區(qū)中的第一條記錄R交換,使R [1...I]和R分別成為增加一條記錄的新有序區(qū)和減少一條記錄的新無(wú)序區(qū)。
這樣,n個(gè)記錄文件的直接選擇排序就可以得到n-1個(gè)直接選擇排序后的一個(gè)有序結(jié)果。
優(yōu)點(diǎn):移動(dòng)數(shù)據(jù)的次數(shù)是已知的(n-1次);
缺點(diǎn):比較太多。
第三,插入排序
一組數(shù)據(jù)a[1],a[2],...按升序排列的A [n]和一組無(wú)序數(shù)據(jù)b[1],b[2],...B [m]都是已知的,所以需要把它們組合成一個(gè)升序序列。首先比較b[1]和a[1]的值。如果b[1]大于a[1],則跳過(guò)。比較b[1]和a[2]的值。如果b[1]仍然大于a[2],繼續(xù)跳過(guò),直到b[1]小于一個(gè)數(shù)組中的某個(gè)數(shù)據(jù)a[x]為止。到a[x]的原始位置,這就完成了b[1]的插入。B[2]~b[m]以同樣的插入。(如果有無(wú)數(shù)個(gè)組A,b[1]可以看作n1的數(shù)組A。)
優(yōu)點(diǎn):穩(wěn)定快速;
缺點(diǎn):比較的次數(shù)不一定相同。比較次數(shù)越少,插入點(diǎn)后移動(dòng)的數(shù)據(jù)就越多,尤其是數(shù)據(jù)總量巨大的時(shí)候,而鏈表可以解決這個(gè)問(wèn)題。
第四,縮小增量排序
由Hill于1959年提出,又稱(chēng)Hill排序(殼排序)。
一組無(wú)序數(shù)據(jù)a[1],a[2],...已知一個(gè)[n],需要按升序排列。發(fā)現(xiàn)當(dāng)n不大時(shí),插入排序的效果很好。首先取一個(gè)增量d(dltn),列出a[1],a[1 d],A [12d]...作為第一組,還有一個(gè)[2],一個(gè)[2 d],一個(gè)[22d]...作為第二組,a[d],a[2d],a。
如何在linux服務(wù)器上用 PHP 執(zhí)行 python 腳本?
您可以將執(zhí)行python腳本視為執(zhí)行shell命令。
Php可以通過(guò)以下執(zhí)行shell命令:
1.字符串系統(tǒng)(string $command [,int amp$return_var])
exec ( string $command [,array amp$output [,int amp$return_var ]])
3.void passthru ( string $command [,int amp$return_var])