著名的快数排序Quick-sort

来源:互联网 发布:otg软件 编辑:程序博客网 时间:2024/05/16 17:15
 
#include "stdafx.h"
#include 
<iostream>

int Partition(int A[], int p, int r)
{
    
int x = A[r];//选择x=A[r]作为主元
    int i = p -1;
    
for(int j = p; j <= r-1; j++)
        
if(A[j] <= x)//假设A[i]大于x,那么就不用移动了。第二个语句swap()将x移动到最左方,所以比x大的数都在右方。
        {            //假设A[j]小于x,因为A[i]的下标i始终小于等于j,那么说明A[i]是大于x的值,否则便是被移动了。
            i = i+1;//这样第一个函数swap()将把大于x的A[i]与小于x的A[j]互相交换位置。
           std::swap(A[i], A[j]);
        }

    std::swap(A[i
+1], A[r]);

   
return i+1;

}


void Quick_Sort(int A[], int p ,int r)
{
    
if(p < r)
    
{
        
int q = Partition(A, p, r);
        Quick_Sort(A, p, q
-1);
        Quick_Sort(A, q, r);
    }


}



int main(int argc, char* argv[])
{   

    
int C[12= {100,4,8,7,6,32,5,4,8,1,2,1};
    Quick_Sort(C, 
011);
    
for(int i = 0; i <= 11; i++)
        std::cout
<<C[i]<<"";
    
return 0;
}