【算法学习】快速排序

1.算法思路:

  选择一个基准点,将数组中比基准点小的值移到基准值左边,比基准值大的移到基准值右边。然后递归调用,将基准值左右两边的数组做同样操作,递归结束的条件是数组只有一个元素。

  基准点归位的方法:

    设一头一尾两个指针,右指针向左找比第一个基准值小的数,找到后将值赋给右指针指向的数,左指针向右找第一个比基准值大得数,找到后赋给右指针指向的数


void quicksort(int left,int right){

int i,j,t,temp;
    if(left>right)
       return;
      
    temp=a[left]; //temp中存的就是基准数
    i=left;
    j=right+1;
    while(true)
    {
                   while(a[++i]<tmp&&i<right);
while(a[--j]>tmp);
if(i>=j)
break; //交换 t=a[i]; a[i]=a[j]; a[j]=t; } a[left]=a[i]; a[i]=temp; quicksort(left,i-1); quicksort(i+1,right); }

  

原文地址:https://www.cnblogs.com/teensSpirit-code-life/p/11741377.html