簡體   English   中英

為什么我的快速分類不起作用

[英]Why won't my quick sort work

我不知道為什么這段代碼不太正確。 它對大多數數組進行排序,但是有些數字不合適。 任何幫助將非常感激。

int partition(int* an_array, int from, int to)
{
    int pivot = an_array[(from + to) / 2];
    int left = from;   
    int right = to;   
    while(left < right)
    {
        while(an_array[left] < pivot)
        {
            left = left + 1; 
        }//end while loop       
        while(an_array[right] > pivot)
        {
            right = right - 1; 
        }//end while
        if(left < right)
        {
            swap_numbers(an_array[left], an_array[right]);
            left = left + 1; 
            right = right - 1; 
        }//end if 
    }//end while loop
    return right; 
}//end partition function 


void quick_sort(int* an_array, int from, int to)
{
    if(from >= to) return; 
    int p = partition(an_array, from, to); 
    quick_sort(an_array, from, p); 
    quick_sort(an_array, p + 1, to); 
}//end quick_sort

您忘記添加:

swap_numbers(an_array[from], an_array[right]);

就在之前

return right;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM