Массив не сортируется в Quicksort TypeScript - PullRequest
0 голосов
/ 12 января 2020

Я учусь создавать алгоритмы сортировки, и я делаю алгоритм быстрой сортировки. Я следовал учебному пособию, но изменил код, и он не отображает ожидаемый результат. У меня есть массив [95, 2, 19, 60, 49]. Сортированный массив должен быть [2, 19, 49, 60, 95].

Ожидаемый результат: [2, 19, 49, 60, 95] Фактический результат: [ 95, 2, undefined, 60, 49, <91 empty items>, undefined ]

Вот мой TypeScript код:

quicksortEx.ts

// An example of quicksort algorithm
// Packed with a custom array
// And some functions.

// Array
let exArr: number[] = [95, 2, 19, 60, 49]; // Sorted should look like
// 2 19 49 60 95

//The partition (partate) function
function partate(arr: number[], low: number, high: number){
    let pivot: number = arr[high];
    let i: number = (low - 1);

    for (let j = 0; j <= high-1; j++){
        if (arr[j] <= pivot){
            // Code taken from stack overflow
            let temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp; // This litterally swaps the
            // array
            i++; // Add to i
            [arr[i], arr[j] = arr[j], arr[i]] // I dont know
            // ^ Comment out if this doesnt work
        }
    }
    let temp = arr[high];
    arr[i+1] = arr[high];
    arr[high] = temp;
    console.log(arr[i]);
    console.log(arr)
    console.log(arr);
}

function quicksort(arr: number[], low:number, high: number){
    // If low number is smaller than high number
    if (low < high){
        let pi: any = partate(arr, low, high);

        quicksort(arr, low, pi -1);
        quicksort(arr, pi +1, high);
    }  
}

// Lets try it out
quicksort(exArr, 2, 96);

Любая помощь будет признательна ...!

1 Ответ

0 голосов
/ 12 января 2020

Вот решение. https://repl.it/@IT18117110 / 237WRFDQW

У вас было много ошибок. Я прокомментировал, где они у вас были

Пожалуйста, постарайтесь не задавать подобные вопросы. Старайтесь изо всех сил и попробуйте задать вопрос очень конкретным образом c, не публикуя код. Вы могли исследовать и исправить много ошибок, прежде чем писать здесь.

Пожалуйста, следуйте этим советам, прежде чем задавать вопросы. { ссылка }

...