基础算法----快速排序

快速排序算法

快速排序使用分治法策略把一个串行分为两个子串行(两个串行的分割点就是基准点,两部分是大于基准点部分和小于基准点部分)。git

  1. 数列中选择一个元素做为基准点,常从第一个元素开始;
  2. 序列中小于基准点的元素放到前面,大于基准点的元素放到基准点后面,这个过程称为分区操做;
  3. 递归的把两个子序列(大于基准点部分,小于基准点部分)进行递归操做;
  4. 退出条件,left = right;

代码示例

static int[] arr = { 6, 1, 2, 7, 9, 3, 4, 5, 10, 8 };

#region 快速排序
static void quickSort(int left,int righ)
{
    if (left > righ) {
         return;
}

 int k = arr[left];
 int i = left;
 int j = righ;

while (i!=j)
{
    while (k <= arr[j] && i < j)
     {
         j--;
     }
     while (k >= arr[i] && i<j)
      {
           i++;
       }
    if(i<j)
    {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
     }
}

if (i == j)
{
      arr[left] = arr[i];
      arr[i] = k;
}

quickSort(left,i-1);
quickSort(i+1,righ);
}
#endregion

结果

快速排序

源码

http://git.oschina.net/aspnet/Suan-Fa算法

相关文章
相关标签/搜索