作者:
hth9494 (hth9494)
2016-01-21 23:45:34開發平台(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做交換的那三行
換成下面被我註解掉的那三行程式碼就錯了
下面的那三行也能達到交換的效果才對啊
請問錯在哪裡呢,我找很久都找不到
請各位大大幫忙解惑,謝謝