您的位置:澳门402永利com > 关于计算机 > 高速排序

高速排序

发布时间:2019-09-24 12:19编辑:关于计算机浏览(50)

    int PickPivot (int arr[], int dolna, int gorna)
    {
        int sredina = (dolna+gorna)/2, temp;
    
        if (arr[dolna] > arr[sredina])
        {
            temp = arr[sredina];
            arr[sredina] = arr[dolna];
            arr[dolna] = temp;
        }
    
        if (arr[sredina] > arr[gorna])
        {
            temp = arr[gorna];
            arr[gorna] = arr[sredina];
            arr[sredina] = temp;
        }
    
        if (arr[dolna] > arr[gorna])
        {
            temp = arr[gorna];
            arr[gorna] = arr[dolna];
            arr[dolna] = temp;
        }
    
        return sredina;
    }
    
    void Partition (int arr[], int dolna, int gorna, int pivot)
    {
        int i=dolna, j=gorna-1, temp;   
    
        while (j => i)
        {
            while (arr[i] < arr[pivot])
                i++;
            while (arr[j] > arr[pivot])
                j--;
            if (i < j)
            {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        pivot = i;
    }
    
    void QuickSort (int arr[], int dolna, int gorna)
    {
        int pivot;
        if (dolna < gorna)
        {
            pivot = PickPivot (arr, dolna, gorna);
            Partition (arr, dolna, gorna, pivot);
            QuickSort (arr, dolna, pivot-1);
            QuickSort (arr, pivot+1, dolna);
        }
    }   
    

    本文由澳门402永利com发布于关于计算机,转载请注明出处:高速排序

    关键词:

上一篇:获得当前进程的会话ID

下一篇:没有了