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

     复杂度:O(n log n)

     基本思想:通过一趟排序讲待排序记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

     #include <stdio.h> 


    int Partition(int *a, int low, int high)
    {
        
        int pivotkey = a[low];
        //注意左右分别对应传入的low high
        while(low<high)
        {
            while(low<high && a[high]>=pivotkey)//中枢要比右边的小
                --high;
            a[low]=a[high];//发现一个比中枢小的,移到左边

            while(low<high && a[low]<=pivotkey)//中枢要比左边的大
                ++low;
            a[high]=a[low];//发现一个比中枢大的,移到右边
        }
        a[low]=pivotkey;//现在high = low,将中枢移到中间

        return low;
    }

    void QSort(int *a, int low, int high)
    {
        if(low<high)
        {
            int pivotloc = Partition(a, low, high);
            QSort(a, low, pivotloc-1);
            QSort(a, pivotloc+1, high);

        }
    }
    //输出内容
    void print_content(int *a, int size)
    {
        for(int i=0;i<size;i++)
        {
            printf("%d\t",a[i]);
        }
        printf("\n");
    }
    int main(void)
    {
        int a[]={0,7,8,9,3,4,5,1,2,6,11,10,13,12};
        QSort(a,0,sizeof(a)/sizeof(a[0]));//40/4
        print_content(a,sizeof(a)/sizeof(a[0]));
        return 0;
    }

  • 相关阅读:
    TCP协议实现双工通信
    搭建本地FTP服务器
    CSS 3 选择器root、not、empty、target
    CSS 3 中的伪类选择器
    CSS 3 中的属性选择器
    Entity Framework Code First属性映射约定
    Entity Framework数据库初始化四种策略
    HTML 5 Base 64 编码
    HTML 5 离线程序
    HTML5 本地数据库IndexedDB数据库
  • 原文地址:https://www.cnblogs.com/no7dw/p/2228815.html
Copyright © 2011-2022 走看看