这个选择排序的问题在哪里 ,帮我看一下
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);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
感觉并没有什么问题……
你的算法基本就是:
从a[0]~a[n]中选出最小的,赋给a[0]
从a[1]~a[n]中选出最小的,赋给a[1]
从a[2]~a[n]中选出最小的,赋给a[2]
...