zoukankan      html  css  js  c++  java
  • 快速排序

                  快速排序

    起泡排序

    每一次比较交换,选出最大的关键字放置到最后一个位置上。

    时间复杂度:O(n^2)

    例如:

        

    快速排序

    1 基本思想

    通过一趟排序将待排序的记录分割成独立的两部分,

    其中一部分记录的关键字均比另一部分的所有关键字小。

    然后再分别对这两部分继续进行相同的排序分割。

    树形结构如下:

        

     

            

    通常选取待排序记录的第一个值作为基准比较值。

     

    2 实现过程

    1)过程

        

    (2)分组

        

    3)代码

    //交换两个数的值
    void swap(int& a,int &b)

    {
    a = a + b;
    b = a - b;
    a = a - b;
    }

     

    //起泡排序
    void BubbleSort(int *src,int len)

    {
    int i,j;

    for (i = 0 ; i < len - 1; i++)
    {
    for(j = 0; j < len - i - 1; j++)
    {
    //将最大数往后移动
    if (src[j] > src[j+1])

    {
    swap(src[j],src[j+1]);
    }
    }
    }
    }

     

    //快速排序
    void quickSort(int *src,int start,int end)

    {
    int low = start;
    int high = end;
    int temp = src[low];

    if (start < end)
    {
    //分组
    while(low < high)

    {
    while(low < high)
    {
    if (src[high] >= temp )
    {
    high--;
    }
    else
    {
    swap(src[low],src[high]);
    break;
    }
    }

    while(low < high)
    {
    if (src[low] <= temp )
    {
    low++;
    }
    else
    {
    swap(src[low],src[high]);
    break;
    }
    }
    }

    //递归
    quickSort(src,start, low - 1);

    quickSort(src,high + 1,end);
    }
    }





  • 相关阅读:
    52、saleforce 第一篇
    nodejs自定义模块
    NodeJS require路径
    Angularjs ngTable使用备忘
    HTML5拖拽功能中 dataTransfer对象详解
    Javascript闭包深入解析及实现方法
    Grunt实例
    Grunt插件uglify
    javascript 将字符串当函数执行
    多个springboot项目部署在同一tomcat上,出现jmx错误
  • 原文地址:https://www.cnblogs.com/bastard/p/2266881.html
Copyright © 2011-2022 走看看