看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 關於我寫的選擇排序法中,有一段地方,是要把當前的數字 與其他的數比較後交換位置,交換的部分有一點點問題。 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> #include <stdlib.h> #include <time.h> int main() //選擇排序法 { time_t ts; srand((unsigned int)time(&ts)); int a[10]; int i; for (i = 0; i < 10; i++) //隨機賦值 { a[i] = rand() % 100; //值設在0~99間 printf("%d ", a[i]); } printf("\n"); //排序開始 int max; for (i = 0; i < 9; i++) { max = i; //假設目前這個數是最大的數 int j; for (j = i + 1; j < 10; j++) { if (a[max] < a[j]) { max = j; } } int temp = a[i]; //交換 a[i] = a[max]; a[max] = temp; //a[max] = a[max] + a[i]; //a[i] = a[max] - a[i]; //a[max] = a[max] - a[i]; } //排序結束 for (i = 0; i < 10; i++) //排序後打印 { printf("%d ", a[i]); } getchar(); return 0; } 補充說明(Supplement): 目前這個程式碼跑起來結果沒問題,但是請各位看一下交換的地方 用temp做交換沒有問題,我跑起來是對的 可當我把temp做交換的那三行 換成下面被我註解掉的那三行程式碼就錯了 下面的那三行也能達到交換的效果才對啊 請問錯在哪裡呢,我找很久都找不到 請各位大大幫忙解惑,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.227.206 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1453391137.A.B66.html
hth9494: 發現問題了~~不好意思 01/22 01:22