function selectionSort(){ var nowData = new Array(); var index = 0; for (var j = 0; j < a.length-1; j++) { for (var i = j+1; i < a.length; i++) { if(a[j]>a[i]){ var z = 0; z = a[i]; a[i] = a[j]; a[j] = z; } }//one nowData[index] = a.toString(); index++; }//two }
想写可视化排序,所以把每一次结果存为一个数组,但是排序算法好像有错误。
比如:
我输出了nowData数组,第一次就是初始值,但是并没有交换数据,大的数据被拍在了后面
代码如上,问题出在哪
Array [ "16", "77", "54", "50", "81", "64", "61", "41", "79", "31" ]
Array [ "16", "31", "77", "54", "81", "64", "61", "50", "79", "41" ]
Array [ "16", "31", "41", "77", "81", "64", "61", "54", "79", "50" ]
Array [ "16", "31", "41", "50", "81", "77", "64", "61", "79", "54" ]
Array [ "16", "31", "41", "50", "54", "81", "77", "64", "79", "61" ]
Array [ "16", "31", "41", "50", "54", "61", "81", "77", "79", "64" ]
Array [ "16", "31", "41", "50", "54", "61", "64", "81", "79", "77" ]
Array [ "16", "31", "41", "50", "54", "61", "64", "77", "81", "79" ]
Array [ "16", "31", "41", "50", "54", "61", "64", "77", "79", "81" ]
修改完,下面是一个正确的。
function selectionSort(){ var nowData = new Array(); var index = 0; console.log("选择排序"); for (var j = 0; j < a.length-1; j++) { var min = a[j]; var minIndex = j; for (var i = j+1; i < a.length; i++) { if(a[i] < min) { min = a[i]; minIndex = i; } }//one a[minIndex] = a[j]; a[j] = min; // nowData[index] = a.toString(); index++; }//two showDateChange(nowData); }
感觉并没有什么问题……
你的算法基本就是:
从a[0]~a[n]中选出最小的,赋给a[0]
从a[1]~a[n]中选出最小的,赋给a[1]
从a[2]~a[n]中选出最小的,赋给a[2]
...