日期:2014-05-18  浏览次数:20465 次

算法问题 选择排序
public Double minPaixu(ArrayList maxList) 

int i, j, k; 
Double temp = 0; 
Double temp1=0; 
for (i = 0; i < maxList.Count - 1; i++) 

k = i; /*给记号赋值*/ 
for (j = i + 1; j < maxList.Count; j++) 
if (Convert.ToDouble(maxList[k]) < Convert.ToDouble(maxList[j])) k = j; /*是k总是指向最小元素*/ 
if (i == k) 
{ /*当k!=i是才交换,否则a[i]即为最小*/ 
temp = Convert.ToDouble(maxList[i]); 
// temp1 = Convert.ToDouble(maxList[k]); 
maxList[i] = maxList[k]; 
maxList[k] = temp; 


return temp; 

这个这样写有问题吗,我怎么取不出来最小的值呀,请高手指点一下

------解决方案--------------------
对阿,你这是冒泡排序,每一次循环i(for (i = 0; i < maxList.Count - 1; i++) ),都会找到一个最小值.
但是一个一个找到最后一个最小值也就是最大值了.

比如你的数组 { 9,7,3,4}
第一次最小为3
第二次4
第三次7
第四次9

循环后k=9;
其实你单步跟踪调试一下就ok了.