選擇排序法我這樣做出來執行為什麼不對,我感覺我的邏輯沒問題啊

時間 2021-05-06 03:19:51

1樓:捌零老陳

for(i=0;i<9;i++)}

2樓:匿名使用者

#include

int main()

{int i,j,t,a[10];  // 幫你去掉了變數k,minprintf("請輸入10個數:\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<=9;i++)

{// 幫你去掉了k=i賦值操作

for(j=i+1;j<=9;j++)

{// 幫你去掉了min=a[k]操作

if(a[j]

你的有點凌亂,幫你改了一下,建議到編譯器上去寫,不要到手機上寫。手機上畢竟不方便!

程式設計:選擇排序法。幫我看看這兩個程式哪不一樣,為什麼1執行結果不對,2執行結果對

3樓:匿名使用者

比較一下倆程式,

第乙個是判斷

if (a[i]

這個因為k始終等於i,根本不可能成立,這能對就奇怪了呀。

第二個是判斷

if (a[j]

這才是正確的判斷呀。

大家幫忙看看為什麼會有這樣的結果?我覺得沒有出問題啊(直接選擇排序法)

4樓:匿名使用者

這個是選擇排序吧;陣列下標從0開始

for (i = 0; i < array.length-1; ++i){

index=i

for(j=i+1;j

c語言選擇排序法遇到了問題,求幫我分析一下我的錯誤**的執行過程 30

5樓:匿名使用者

排序的主要的地方,都不對的 。。。。。。。。。。。。。

for(i=0; i<7; i++)}}

c語言選擇排序,這樣為什麼不行呢?

選擇排序法:為什麼程式執行之後輸出結果不對?

6樓:匿名使用者

for(i=0;i<9;i++)​}}

這樣就對了……而且這是氣泡排序,不是選擇排序!

7樓:匿名使用者

}選擇排序,應該是每次比較找到乙個 最小(或最大)的數,放在最後。

你這裡 k=j,在if (a[k]

你寫的雖然有點繁瑣,但是很像 氣泡排序(加上花括號!)。

選擇排序寫法一般是這樣的:

int temp;

for(int i=0; i<9; i++)for(int j=i+1; j<10; j++)} //選擇排序結束!

c語言 選擇排序 到底**出錯了呢

8樓:竹葉蘭之夏

首先在你的第乙個for迴圈之後, 增加乙個句:

i = 0;

其次, 你的排序的部分邏輯應該是有些問題的.

k = 0;

while (i <  5)

tmp = a[i];

a[i] = a[j];

a[j] = tmp;

i++;

}上面是剛我自己寫的, 不知道有沒bug, 你試一下吧.

9樓:匿名使用者

你的while迴圈裡,if判斷的語句只能作用乙個語句,所以每次都進行了交換,而不是符合條件才進行交換

c語言用選擇法排序,為何無法實現功能,求大神指出我**的問題,我編譯不存在語法錯誤。

10樓:銷

交換的最後一句寫錯了,是a[i]=temp;

判斷是否相等其實沒必要,多數情況下加了這個判斷反而會變得更慢

c語言選擇排序法我排的執行結果不對求助高

捌零老陳 for i 0 i 9 i include int main int i,j,t,a 10 幫你去掉了變數k,minprintf 請輸入10個數 n for i 0 i 10 i scanf d a i for i 0 i 9 i 幫你去掉了k i賦值操作 for j i 1 j 9 j ...

C語言,選擇法排序,對陣列A進行公升序排列,求答案,謝大神

給你個我以前寫的降序的程式,你稍微改下就行了,我懶得改了,include define n 10 main printf 這 d個數從大到小排列為 n n 列印出這十個經排列後的數 for i 0 i printf d a i printf n include include main printf...

c語言用選擇法對陣列中整數按由小到大排序

首先以array 0 作為參照,從左到右掃描,找到最小的資料與array 0 位置交換。接下來以array 1 作為參照,重複上述過程。k i定位參照 k j找到剩下陣列中最小值 k i是為了每次迴圈都從當前項開始呀。k j 不是你說的j k 是為了記錄後面的最小項,以方便替換。 從第i個數開始,比...