作者wa007123456 (大笨羊)
看板C_and_CPP
标题[问题] 选择排序法的问题
时间Wed Nov 16 14:33:05 2016
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VC++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
无法完成正确排序
喂入的资料(Input):
阵列:
{87,23,21,14,17,9,86,66,99,10}
预期的正确结果(Expected Output):
9, 10, 14, 17, 21, 23 , 66 , 86, 87, 99,
错误结果(Wrong Output):
9, 10, 14, 17, 21, 66, 23, 86, 87, 99,
程式码(Code):(请善用置底文网页, 记得排版)
select sort函数 我是这样写的....
---------------------------------------------------
void select_Sort(int data[], int n){ /*参数n为阵列长度*/
int i, j, min, tmp;
for (i = 0; i < n ; i++) {
min = i;
for (j = i; j < n; j++) {
if (data[j] < data[min]) {
min = j;
}
tmp = data[min];
data[min] = data[i];
data[i] = tmp;
}
}
}
---------------------------------------------------
补充说明(Supplement):
我用debuger了 前面的排序正常 但是到了後面会有一个奇怪的转换(!?)
66跟23交换位置了
感谢各位前辈...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.227.195.157
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1479277988.A.58C.html
※ 编辑: wa007123456 (125.227.195.157), 11/16/2016 14:35:57
1F:推 tsoahans: 你先换过去min就不是最小值了 11/16 14:59
感谢楼上 我会了...原来交换的地方写错了...
要在第一层回圈
不然他会疯狂乱换@@ 谢谢你
※ 编辑: wa007123456 (125.227.195.157), 11/16/2016 15:09:51