基础算法----快速排序
基础算法----快速排序
春哥大魔王 发表于10个月前
基础算法----快速排序
  • 发表于 10个月前
  • 阅读 11
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 国内很多程序员来说算法,数据结构,操作系统,网络这些很基础的知识反而都比较薄弱,因为大部分学校或者培训机构的教学能力有限,指导方向都是偏重于实践与实用。 但是随着程序员能力的提升,回头去提升自己基础知识是非常有必要,以算法来说不管是日常编程场景或是面试,掌握常见的10种算法完全可以胜任。 基础算法本身不难,但是好多人在开始之前就先懦弱的害怕了,这个系列简单介绍常见的10种基础算法,抛砖引玉。

快速排序算法

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

  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

标签: 基础算法
共有 人打赏支持
粉丝 6
博文 46
码字总数 20422
×
春哥大魔王
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: