码迷,mamicode.com
首页 > 编程语言 > 详细

【算法学习】快速排序

时间:2019-10-26 01:21:58      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:--   调用   col   bsp   快速排序   div   一个   算法学习   条件   

1.算法思路:

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

  基准点归位的方法:

    设一头一尾两个指针,右指针向左找比第一个基准值小的数,左指针向右找第一个比基准值大的数,找到后交换,直到左指针==右指针;

 

2.代码:

  

void quicksort(int left,int right)
{
    int i,j,t,temp;
    if(left>right)
       return;
      
    temp=a[left]; //temp中存的就是基准数
    i=left;
    j=right;
    while(i!=j)
    {
                   while(a[j]>=temp && i<j)
                            j--;
                   while(a[i]<=temp && i<j)
                            i++;
                   //交换
                   if(i<j)
                   {
                            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);
}

 

  

【算法学习】快速排序

标签:--   调用   col   bsp   快速排序   div   一个   算法学习   条件   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!