排序算法之快速排序(QuickSort)

    快速排序又称分区交换排序,是目前已知的平均速度最快的一种排序算法,它是对冒泡排序的一种改进。该算法的基本思想是:从待排序的n个记录中任意选取一个记录R(通常是序列中的第一个元素)作标准,调整序列中各个记录的位置,使R前面的记录的关键字都比它小,后面的关键字都比它大,这样的一个过程称为一次快速排序。然后对两边的记录再同样分别进行这样一个过程,直到各个子序列的长度为1时,排序完毕。

    算法如下:

#include "stdafx.h"

void QuickSort(int a[],int low,int high)
{  
    
    
int k=low;//保存当前空位
    int i=low,j=high;
    
int key=a[low];
    
    
while(i<j)
    {       
        
        
while(i<j)
        {
            
if(a[j]<key)
            {
                a[k]
=a[j];
                k
=j;
                
break;
            }        
            j
--;
        }
        
        
while(i<j)
        {
            
if(a[i]>key)
            {
                a[k]
=a[i];
                k
=i;
                
break;
            }
            i
++;
        }
    }
    
    a[k]
=key;
    
    
if(low<k-1) QuickSort(a,low,k-1);
    
if(high>k+1) QuickSort(a,k+1,high);
}

int _tmain(int argc, _TCHAR* argv[])
{
    
int a[]={21,56,23,90,25,76,19,44,98,8,77,0};
    QuickSort(a,
0,11);
    
for(int i=0;i<12;i++)
    {
        printf(
"%d,",a[i]);
    }
    getchar();
    
return 0;

} 

原文地址:https://www.cnblogs.com/yunfei181/p/2128995.html