javascript - 这个选择排序的问题在哪里 ,帮我看一下
伊谢尔伦
伊谢尔伦 2017-04-11 12:27:36
0
1
229
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);
}
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

모든 응답(1)
大家讲道理

感觉并没有什么问题……

你的算法基本就是:

  1. 从a[0]~a[n]中选出最小的,赋给a[0]

  2. 从a[1]~a[n]中选出最小的,赋给a[1]

  3. 从a[2]~a[n]中选出最小的,赋给a[2]

  4. ...

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!