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);
    }
    }





  • 相关阅读:
    Java实现自定义排序
    常用加密算法
    隐式传参
    mybatis-plus多租户的使用
    Python3.x基础学习-类--面向对象
    Python3.x基础学习-函数用法(四)
    Python3.x基础学习-函数用法(三)
    Python3.x基础学习-函数用法(二)
    功能测试经验汇总(--持续更新)
    Python3.x基础学习-函数用法(一)
  • 原文地址:https://www.cnblogs.com/bastard/p/2266881.html
Copyright © 2011-2022 走看看