博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三数中值快速排序(长度小于3的数组转插入排序)
阅读量:6538 次
发布时间:2019-06-24

本文共 1328 字,大约阅读时间需要 4 分钟。

 

 

void insertSort(int a[], int len){    for (int i = 1; i < len; ++i)    {        int j;        int temp = a[i];        for (j = i - 1; j >= 0; --j)        {            if (a[j] <= temp)                break;            a[j + 1] = a[j];        }        a[j + 1] = temp;    }}void swap(int *a, int *b){    int temp = *a;    *a = *b;    *b = temp;}int median3(int a[], int left, int right){    int center = (left + right) >> 1;    if (a[left] > a[center])        swap(&a[left], &a[center]);    if (a[left] > a[right])        swap(&a[left], &a[right]);    if (a[center] > a[right])        swap(&a[center], &a[right]);    swap(&a[center], &a[right - 1]); // hide pivot    return a[right - 1];}const int cutoff = 3;void quickSort(int a[], int left, int right){    int i, j;    int pivot;    if (left + cutoff <= right)    {        pivot = median3(a, left, right);        i = left, j = right - 1;        while (true)        {            while (a[++i] < pivot) {}            while (a[--j] > pivot) {}            if (i < j)                swap(&a[i], &a[j]);            else                break;        }        swap(&a[i], &a[right - 1]); // restore pivot        quickSort(a, left, i - 1);        quickSort(a, i + 1, right);    }    else        insertSort(a + left, right - left + 1);}

 

转载于:https://www.cnblogs.com/sdlwlxf/p/5120496.html

你可能感兴趣的文章
Centos7安装搜狗输入法
查看>>
nodjs html 转 pdf
查看>>
Python字典
查看>>
ofstream 的中文目录问题
查看>>
Android存储方式之SQLite的使用
查看>>
springcloud ribbon 客户端负载均衡用法
查看>>
洛谷P1287 盒子与球 数学
查看>>
自定义starter
查看>>
Bootstrap vs Foundation如何选择靠谱前端框架
查看>>
手机WAP前端开发标准
查看>>
vue-cli脚手架一些插件安装elementui和axios
查看>>
[Gradle] 在 Eclipse 下利用 gradle 构建系统
查看>>
JAVAWEB 一一 Hibernate(框架)
查看>>
与、或、异或、取反、左移和右移
查看>>
jQuery根据元素值删除数组元素的方法
查看>>
Linux基础学习(14)--日志管理
查看>>
vue常用的指令
查看>>
matlab练习程序(随机游走图像)
查看>>
Linux命令行下运行java.class文件
查看>>
input文本框实现宽度自适应代码实例
查看>>