void QuickSort(int low, int high, int array[]) { int Low, High, temp;if (low high) { /*要排序的元素起止下標(biāo),保證小的放在左邊,大的放在右邊。
創(chuàng)新互聯(lián)是一家專業(yè)提供安福企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、HTML5建站、小程序制作等業(yè)務(wù)。10年已為安福眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
includestdio.h#includestdlib.hint main(void){int i,j,n,a[20];//限定整數(shù)范圍為0~k。
可以自己寫各種排序算法來完成。最長(zhǎng)用的是冒泡排序,也是最慢的。還有插入排序,選擇排序,歸并排序,快速排序。stdlib庫提供了快速排序,可以直接使用。
冒泡排序算法的原理如下:比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。對(duì)每一對(duì)相鄰元素做同樣的工作,從開始第一對(duì)到結(jié)尾的最后一對(duì)。在這一點(diǎn),最后的元素應(yīng)該會(huì)是最大的數(shù)。
for的循環(huán)體語義不清。建議刪除不必要的大括號(hào),并將for循環(huán)體大括號(hào)括起來。因二維數(shù)組在內(nèi)存中會(huì)線性存放,故建議定義指針變量 int *p=&A[0][0]; 然后通過p象一維數(shù)組一樣進(jìn)行排序,最后再輸出這個(gè)二維數(shù)組。
程序中有一個(gè)錯(cuò)誤,即在交換兩個(gè)數(shù)值時(shí),使用了未定義的變量 temp,應(yīng)該將 temp 定義為一個(gè)臨時(shí)變量來暫存一個(gè)元素的值。
1、樓主,我的程序如下。函數(shù)max讀入一個(gè)n元素的數(shù)組a,返回其中最大元素的地址。
2、C語言中可以用變量定義數(shù)組的個(gè)數(shù)。原因如下:由于數(shù)組在定義的時(shí)候,系統(tǒng)就會(huì)分配對(duì)應(yīng)的存儲(chǔ)單元,如果用變量,系統(tǒng)就不知道該分配多少字節(jié)的存儲(chǔ)單元,就會(huì)報(bào)錯(cuò)。
3、計(jì)算機(jī)存放地址 需要 unsigned int, 而不能是 int.猜想,是要數(shù)組下標(biāo),int min() 就可以。
4、函數(shù)使用兩個(gè)嵌套的for循環(huán)以列為順序遍歷二位數(shù)組,將其中每一個(gè)數(shù)據(jù)元素都存儲(chǔ)進(jìn)準(zhǔn)備好的一維數(shù)組中。因?yàn)閏語言函數(shù)無法將整個(gè)數(shù)組作為返回值,故函數(shù)會(huì)返回一個(gè)指向一維數(shù)組的指針。
用遞歸吧,總體思想是:第i個(gè)的取值的方法是:從讓第i個(gè)取1到N,如果前i-1都沒有取這個(gè)值,則第i個(gè)取這個(gè)值。
1 待排序數(shù)組首地址 2 數(shù)組中待排序元素?cái)?shù)量 3 各元素的占用空間大小 4 指向函數(shù)的指針,用于確定排序的順序 這個(gè)函數(shù)必須要自己寫比較函數(shù),即使要排序的元素是int,float一類的C語言基礎(chǔ)類型。
第一個(gè)for循環(huán):利用數(shù)組循環(huán)輸入4個(gè)變量。第二個(gè)for循環(huán):該循環(huán)的意思是如果a[0]a[1]的話,兩個(gè)變量的值交換,利用循環(huán)依次比較。
同時(shí)歸并排序是通過遞歸的方法建立遞歸樹,利用最小的兩個(gè)元素進(jìn)行對(duì)比然后逐層向上進(jìn)行遞歸,然后對(duì)比兩個(gè)已經(jīng)排好序的數(shù)組,得到最終完整的排好序的數(shù)組。
這題目書上有例子的,你還是自己把書多看幾遍吧,我開始跟你一樣,一看到不懂就想問別人, 先把書上想關(guān)例子思路想清楚了,過段時(shí)間自己再根據(jù)那思路方法自己慢慢編吧. C語言是一門通用計(jì)算機(jī)編程語言,應(yīng)用廣泛。