1樓:匿名使用者
首先以array[0]作為參照,從左到右掃描,找到最小的資料與array[0]位置交換。
接下來以array[1]作為參照,重複上述過程。
。。。k=i定位參照
k=j找到剩下陣列中最小值
2樓:匿名使用者
k=i是為了每次迴圈都從當前項開始呀。
k=j(不是你說的j=k)是為了記錄後面的最小項,以方便替換。
3樓:匿名使用者
從第i個數開始,比較後面的數,把最小的和第i個交換當i=0時,交換完成,a[i]就是從第0個開始到最後一箇中最小的那個當i=1時,交換完成,a[i]就是從第1個開始到最後一箇中最小的那個.......
k是最小數的下標,然後a[k]和a[i]的數字交換,a[i]就是最小的了
4樓:匿名使用者
如程式所給出的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
5樓:改心水
選擇排序的思想是:每一趟的排序過程都是在當前位置後面剩下的待排序物件中選出值最小的那個,然後放到當前位置上。
該程式中k的定義主要是為了存放陣列中最小數的位置。然後通過t=array[k];array[k]=array[i];array[i]=t;這三條語句,再把這陣列中最小的數字放到前面。注意c語言當中的“=”不是等於,只是一種賦值運算。
其中if(array[j] 6樓:匿名使用者 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個整數按由小到大排序 7樓: 我都不知道說什麼好!i是外迴圈計數變數,由它來安排後面的j迴圈從**開始,所以第i以前的都已經排好序了,這說明i只能一次增1來遍歷陣列。正因為如此,所以才安排一個臨時變數k來記錄第i以後的所有元素值中最小(或最大)值的下標,以不影響i按部就班地遍歷整個陣列(最後一個元素可以不包括,因為j是從i+1開始的;當然包括了也不錯,只是多作一次迴圈判斷罷了)。 你倒好,還在迴圈體中對i進行干預!你以為k=i了兩者就一樣了?k=i只是在每一輪迴圈開始時讓k的初值等於i(選擇法演算法要素之一),而兩者的功能完全不同: i在當前一輪迴圈中不能改變,是要準備把i以後的元素中最小值拿來與i下標的元素比較看是否應該交換;而k是隨i以後的元素值的大小而遊走的,總是記錄著i以後的元素中當前最小值(或最大值)的下標。你把i當k用,隨時更改它的值,那外迴圈還能正常進行嗎?排序演算法過程全是在外迴圈正確程序下才***,外迴圈被人為擾亂了,其中的演算法還能正常? 況且,外迴圈中還有i++!比如:當前i==5,那麼正常時下一輪應該是i==6;可你內迴圈把i當臨時變數k使,倘若array[9]是最小的,那麼i立馬被賦值為9了,……程序退到外迴圈由於i++的作用i就是10了,那麼i 看**首先要理解**思想,再研究怎麼用c的合法語句體現這種思想,所以必須把一個功能模組整體觀察…… 8樓:夜獨行孤單 int i , j ,min ; for ( i = 0 ; i < n-1 ; i ++ )int temp = arr[ i ] ; arr[ i ] = arr [ min ] ; arr[ min ] = temp;} c語言用選擇法對10個整數按從大到小排序。10個整數用scanf函式輸入。利用陣列 9樓:樂跑小子 #include//標準輸入輸出函式呼叫需要此標頭檔案、就是那個printf和scanf函式要用的 void main()//主函式 //讀取資料函式 printf("\n"); //換行for(i=1;i<=9;i++) //比較10個資料printf("\n從大到小排列是:\n"); //輸出字元for(i=10;i>=1;i--) //迴圈輸出按大小排列的資料 printf("%5d",a[i]); printf("\n");//每輸出一個資料換行} 10樓:丫丫 該程式功能:用選擇法對10個整數按升序排序。 #include #define n 10 void main() ;printf("\nthe array is:\n"); /* 輸出陣列元素 */ for (i=0;ia[j]) min =j; temp=a[min]; a[min]=a[i]; a[i]=temp; /* 資料交換 */ }printf("\nthe sorted numbers: \n"); /* 輸出排序結果 */ for (i=0;i printf("%5d",a[i]); printf("\n");} 11樓: #include #define n 10 void main() printf("\nthe sorted numbers: \n"); /* 輸出排序結果 */ for (i=0;i printf("%5d",a[i]); printf("\n");} 12樓:匿名使用者 #include int main() printf("\n"); printf("the orginal numbers:\n"); for(i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); for(i=0;i<10;i++) printf("\nthe sorted numbers:\n"); for (i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); return 0;} c語言:用選擇法對陣列中5個整數按由小到大排序。 13樓:物理公司的 #include void main() }for(i=0;i<15;i++) printf("%4d",a[i]);} 14樓:奉擇安 #include #include int main() for(b=1;b<=4;b++) printf("%d",a[5]); system("pause"); return 0;} 15樓:育知同創教育 a[5]= for(int i =0;i<5;i++)} c語言:用選擇法對陣列中10個數按由大到小排序 16樓:問明 #include using namespace std; int main() void select_sort(int arry,int n)int a[10],i; for(i=0;i<=9;i++) cin>>a[i]; cout for(i=0;i<=9;i++) //輸出10個已經排好序的數 cout void select_sort(int arry,int n) //形參arry是陣列名 int i,j,k,t; for(i=0;i<=n-1;i++) k=i; for(j=i+1;jif(arry[j]k=j; t=arry[k]; arry[k]=arry[i]; arry[i]=t; 執行結果: 17樓:聽不清啊 #include int main() for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); return 0;} 18樓:倜瀤 #include "stdio.h" main() for(i=0;i<10;i++) printf("%d",a[i]); } 19樓:大地炊煙火 #include void main() {int a[10],i,j,k,t; printf("please input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++){ k=i; for(j=i+1;j<10;j++){ if(a[k] c語言,用選擇法對陣列中10個整數按從小到大的順序排序 20樓:匿名使用者 int i , j ,min ; for ( i = 0 ; i < n-1 ; i ++ ){min = i ; for ( j = i ; j < n ; j ++ ){if (arr[j] 21樓:匿名使用者 我寫的標準演算法,請參考 這個問題可以設想如果陣列就是從小到大的,會發生什麼情況 如果就是從小到大的陣列,if 語句沒用了,那麼直接執行a ipos a i 這就會出現問題了,如果你沒 對ipos賦值,那麼程式會報錯,如果對ipos賦值,那麼該賦什麼值?毫無疑問是i,如果和i不同,那麼意味著每次迴圈a 陣列中ipos處的值都... include main printf the result is n for j 0 j 10 j printf d s j printf n c語言高手幫忙 從鍵盤輸入10個整數。用選擇法或冒泡法將它們從小到大的順序排序,並以此順序輸出。include main printf the resul... include void main int i,j,n,k,x,a 100 scanf d d n,x k n for i 0 i include include int main int i,j,n,x,a scanf d d n,x a int calloc n,sizeof int 申請陣列空...c語言選擇法排序問題,c語言 選擇法排序
c語言高手幫忙從鍵盤輸入整數。用選擇法或冒泡法將它們
C語言程式設計問題(用一維陣列),C語言程式設計問題(用一維陣列)