1樓:網友
簡單,用氣泡排序。
#include
void main()
int i,j,*temp;
int num[10],*p;
p=num;
printf("請輸入10個整數");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
printf("排序前為:");
for(i=0;i<10;i++)
printf("%d ",num[i]);
for(i=0;i<10;i++)
for(j=0;j<10-i-1;j++)if((p+j)>(p+j+1))
temp=*(p+j);
p+j)=*p+j+1);
p+j+1)=*temp;
printf("排序前後:");
for(i=0;i<10;i++)
printf("%d",num[i]);
c語言,用選擇法對陣列中10個整數按從小到大的順序排序
2樓:網友
我寫的標準演算法,請參考。
c語言,用選擇法對陣列中10個整數按由小到大排序?求解釋!!!
3樓:網友
首先以array[0]作為參照,從左到右掃瞄,找到最小的資料與array[0]位置交換。
接下來以array[1]作為參照,重複上述過程。
。k=i定位參照。
k=j找到剩下陣列中最小值。
4樓:網友
k=i是為了每次迴圈都從當前項開始呀。
k=j(不是你說的j=k)是為了記錄後面的最小項,以方便替換。
5樓:匿名使用者
從第i個數開始,比較後面的數,把最小的和第i個交換當i=0時,交換完成,a[i]就是從第0個開始到最後一箇中最小的那個當i=1時,交換完成,a[i]就是從第1個開始到最後一箇中最小的那個。
k是最小數的下標,然後a[k]和a[i]的數字交換,a[i]就是最小的了。
6樓:網友
如程式所給出的sort函式,k=i是為了設定每次排序的開始,是參照點;j=k呢,就是將此輪比較中最小的個數賦值給陣列中的第i個,完成此次選擇中最小數的選擇。第一次排序從陣列中第乙個數開始,通過比較,確定最小的數,並通過t=array[k];array[k]=array[i];array[i]=t;
完成賦值給a[o].以此類推,第二次由陣列中第二個陣列元素開始,也就是a[1]開始,比較陣列中以下元素的大小,選擇出餘下元素中最小的,賦值給a[1],完成此次選擇。以此類推,得到乙個完整有序的陣列。
其中,比較次數分別為n-1,n-2,n-3、、、總次數為(n-1)n/2。你仔細想一下就會出來的。。。d
7樓:改心水
選擇排序的思想是:每一趟的排序過程都是在當前位置後面剩下的待排序物件中選出值最小的那個,然後放到當前位置上。
該程式中k的定義主要是為了存放陣列中最小數的位置。然後通過t=array[k];array[k]=array[i];array[i]=t;這三條語句,再把這陣列中最小的數字放到前面。注意c語言當中的「=」不是等於,只是一種賦值運算。
其中if(array[j] 8樓:網友 1、i=0, k=0,j=1,如果array[1]和array[0]比較,然後"k=1 t=array[k];array[k]=array[i];array[i]=t;" 表示將array[0]和array[1]較小的值賦給array[0];然後再將array[1]和array[2]作比較,將。 較小的賦給array[0],如此類推,最後將最大值賦給array[0]; 2、i=1, k,j重新賦值,按照1的結論將把除array[0]之外的所有值中最大的賦給array[1]; 3、以此類推,將array公升序排列。 空函式sort 讓 k=i是為了只比較除最大數值之外的數值,k=j是為了在array[j]=array[k],則不用k=j,直接將小值賦給array[i]。 不知道你能不能看懂 哈哈。 求c語言 程式用選擇法對陣列中10個整數從小到大排 9樓:匿名使用者 main() 交換這2個數。 printf("由小到大排序結果為:"); 輸出for(i=0;i<10;i++) printf("%d,",a[i]); 急:c語言中用冒泡發對10個一維陣列按從小到大順序排序,並輸出。 10樓:龍__鳳 陣列在記憶體中是順序儲存的,a[10]雖然越界,但是a[10]是有值的,你的程式公升序排序能正確執行,你把if裡面的》改成<,降序排序,程式就會出錯,這是因為你的a[10]剛好是乙個大數,a[9]>a[10]不成立,a[10]就沒意義了。 要讓你的程式無論公升序還是降序都正確執行,改成for(i=0;i<9;i++) for(j=i;j<10-i-1;j++)就行了。 11樓:匿名使用者 氣泡排序法,準確的形式應該是這樣的: for(i=0;i<9;i++) for(j=0;j<10-i-1;j++)if(a[j]>a[j+1]) for(i=0;i<10;i++) printf("%4d",a[i]); printf(""); 12樓:網友 其實,是你的兩個迴圈錯了,for(i=0;i<9;i++)for(j=0;j<10-i;j++)這兩個迴圈應該這樣寫for(i=1;i,開始i=1,j<9,則迴圈是從j=0到j=8 ,這樣迴圈9次,也就是第乙個數和後面9個數做比較,以下依次比較到最後,輸出結果。 13樓:網友 j不可能為9;這樣你的兩個問題都解決了! #include main() for(i=0;i<9;i++) for(j=0;j<9-i;j++)//j<10-1-i 這裡錯了。 if(a[j]>a[j+1]) for(i=0;i<10;i++) printf("%4d",a[i]); printf("");} 14樓:網友 同學,首先解決問題1: 你的第乙個問題分析的正確,a[10]的確越界了,這裡越是你需要再處理一次的地方,每次其實j不應該到10-i而是10-i-1;為什麼能夠執行呢? vs是下不行的。vc 6下沒有檢查資料邊界,所以可以正常執行。我這邊除錯的時候顯示a[10]也就是你說的越界的那個元素的值預設為: 1638280 所以呢,肯定不會因為if(a[j]>a[j+1])影響你的排序。 所以貌似可以正常執行。(你要是會除錯肯定沒有這個問題了) 問題2就是你理解的問題了,氣泡排序就是每次把最大的乙個放到最後,那麼下一輪就不需要該輪拍到最後的元素,例如 4 3 2 1變成 3 2 1 4 那麼排的時候就不用考慮4了。到最後一輪時,本身只要排j=0的那麼多拍了j=1 也是沒有影響的,後面的都比之前的大,自然不要比較了啊!!! 說的也不是很清楚,希望可以解決你心頭的疑惑。 求採納哦!! 嘻嘻…… 陣列實驗:c語言,對輸入的10個整數從小到大的順序排序 15樓:網友 氣泡排序法: #include int main() for(i=0;i<10;i++) printf("%d ",a[i]); return 0; 選擇排序法: #include int main() if(k!=i) for(i=0;i<10;i++) printf("%d",a[i]); return 0;} float p 4 p指向的是4個float構成的陣列.這裡不能改為float p,因為search函式內有 p n i 這個表示式相當於 p n i 這個表示式的意思是 從p指向的位置開始,往後偏移,尋找第 n 4 i 個float數.而這正好與score陣列的排放規律相同.為什麼是n 4 i而不... 1 組距分組 變數值較多的情況下,資料分組採用組距分組,就是將全部變數值依次劃分為若干個區間。兩個問題 分組數目確定 與資料本身的特點和資料個數有關,組數確定的原則是能夠清楚的顯示資料分佈特徵和規律為原則,組數太少資料分佈過於集中,組數太多使資料過於分散,按照sturdes提出的公式確定組數。組距的... 建立第三個陣列,把遍歷後相同內容的存入。地主的地畝不夠詳細。陣列會不會含有相同的元素專案?如與比對,會出現這種重複的陣列元素嗎,如果會,結果希望是咋樣的。假設bai陣列在a1 dua15,已知數在zhib1,則在要dao顯示的地方輸入專 index a1 a15,match small abs b1...指向陣列指標問題
spss如何對資料重新分組,如何用SPSS進行資料分組
EXCEL如何用公式讓陣列和區域的陣列一一比對,找相同值到一起放在同單元格里