代码:

======4、快速排序优化==============
int Partion(int *arr,int low,int high)
{int tmp = arr[low]; while(low < high){while(low < high && arr[high] >= tmp){high--;}if(low >= high){break;}else{arr[low] = arr[high];}while(low < high && arr[low] <= tmp){low++;}if(low >= high){break;}else{arr[high] = arr[low];}}arr[low] = tmp;return low;
}
void Swap(int *arr,int start,int end)
{int tmp = arr[start];arr[start] = arr[end];arr[end] = tmp;
}
void Focus_Same_Num(int *arr, int low, int par, int high, int *left, int *right)   //优化4
{if(low < high){int ParLeftIndex = par-1;int ParRightIndex = par+1;for(int i = par-1;i >= low;i--){if(arr[i] == arr[par] )//如果两个值相等,那么交换,如果不是紧挨着的{if(i != ParLeftIndex){Swap(arr,i,ParLeftIndex);//把相等的拉过来,聚集在一起ParLeftIndex--;}else{ParLeftIndex--;}}}*left = ParLeftIndex;for(int i = par+1;i <= high;i++){if(arr[i] == arr[par]){if(i != ParRightIndex){Swap(arr,i,ParRightIndex);ParRightIndex++;}else{ParRightIndex++;}}}*right = ParRightIndex;}
}
void Quick(int *arr, int low, int high)
{if (low < high)                             {int par = Partion(arr, low, high);int left = par - 1;int right = par + 1;//优化方式2:Focus_Same_Num(arr, low, par, high, &left, &right);   //Qsort(arr, low, left);            //分治左边序列//Qsort(arr, right, high);            //分治printf("par == %d\n",par);printf("left == %d\n",left);printf("right == %d\n",right);if(par > low+1){Quick(arr,low,left);//par-1}if(par < high-1){Quick(arr,right,high);par+1}}
}
void QuickSort(int *arr,int len)
{Quick(arr,0,len-1);
}

快排优化代码__2018.07.26相关推荐

  1. 快排三种基本解法以及两种快排优化

    /*  快速排序  基本思想    选定每次排序的基准数据 在剩下的位置将小于基准值的数据放在基准值得左边,大于基准值的数据放到基准值的右边    一次划分之后 如果此基准值的左右两边仍存在大于两个数 ...

  2. c++ 快排优化(三数取中法)

    快排优化(三数取中法) 文章目录 快排优化(三数取中法) 前言 一.三数取中法 二.递归思想 三.程序实现过程(代码) 1.取基准数(三数取中) 2.快速排序(递归) 总结 前言 作为刚刚入门c和c+ ...

  3. 快排优化Python表示

    基本快速排序分析 以从小到大排序为例 * 选取一个主元(选取方式多样) * 利用主元,将序列分为两个子序列,左侧都比主元小,右侧都比主元大. * 对两个子序列重复此操作 例如取第一个元素,代码表示如下 ...

  4. 算法基础:快排优化:为什么快排都会TLE

    在算法训练中,快排应该是基础中的基础了,直接使用前面介绍的快排,无论是单向循环还是双向循环方式,在特定的数据序列下,都有可能出现TLE(Time Limit Exceeded)超时,这篇文章对原因和基 ...

  5. 快排Java代码实现(Quick Sort)

    1.  快排算法思路 基本思想:通过一趟快速排序将待排数组分割成独立的两份部分; 其中一部分数组的值均比另一部分数组的值小,则可分别对着两部分数组继续进行排序,以达到整个序列有序. 快排的平均时间复杂 ...

  6. 七天快排优化真的存在!

    在当下的互联网中经常会看到一些网站优化公司推出的网站快排系统,关键词超快上首页.不过,我们今天要说的是,这样的黑帽行为是真的存在. 1. 借用高权重老网站 在行业相关的高权重网站中修改tdk借力实现快 ...

  7. 验证元素的唯一性(二重循环法和快排优化)

    学校练习,简单的我就不放上来了,值得整理的,我保存一下 习题4 1.1.验证元素唯一性(二重循环)   1.1.1.算法描述 验证元素唯一性,主要方法是:建立两重循环,进行校验每个元素和其他元素的 1 ...

  8. 快速提升网站排名_使用快排优化的方法

    确定自己网站适不适合做快排 好多小伙伴想为自己网站做一做快排,但是又不知道自己网站适不适合,首先,大家都知道选好关键词的重要性,想实现投入和产出的最大化,建设网站前选好合适的关键词是非常必要的.找到网 ...

  9. python模拟seo快排vps点击代码实操

    本期主要是介绍一下利用vps拨号的方法去运行用户点击行为,俗称seo模拟快排,那么顾名思义,快排的运行方式需要在一台拨号服务器上进行,本次模拟快排的代码是采用python中的pyppeteer库,这个 ...

最新文章

  1. js请求结果拦截机器_js利用jquery的jsonp来解决ajax跨域请求被浏览器拦截结果的问题...
  2. 本科视觉算法实习生面经
  3. python 一次性定时器_python 定时器每天就执行一次的实现代码
  4. 【Linux】一步一步学Linux——apt-sortpkgs命令(280)
  5. Python FastApi:post文件与数据/本地端测试
  6. 每天学一点flash(56)循环的小实验
  7. HDOJ 1274 展开字符串
  8. python学习-python学习笔记(一)python简介和基础
  9. BeautifulSoup_python3
  10. 【Java从入门到天黑|01】SE入门之Java的前生今世
  11. html5图片自动轮播纯代码,HTML5的自定义data-*实现图片切换或者轮播(代码实例)...
  12. 遗传算法优化SVM支持向量机分类预测的参数代码模型
  13. 机器学习之K均值聚类算法K-Means(python代码实现)
  14. PC装MAC OS 10.6雪豹系统教程
  15. 线程的状态及状态转换
  16. android 事件分发 代码解析,Android事件分发之源码分析
  17. 教学相长——什么是真正的学习型人才
  18. 机器学习 python
  19. qlv视频格式怎么转换成常用的mp4格式
  20. 请叫我程序员!(一)

热门文章

  1. 美国佐治亚大学卢国玉老师组招收计算机视觉方向全奖博士生
  2. navicat显示中文为问号
  3. Chrome源码剖析
  4. 腾讯云域名证书下载_备案域名证书获取
  5. 如何制作 linux 系统 U盘启动盘
  6. 图注意力网络(GAT)
  7. 垃圾回收器判断对象是否存活
  8. html中字符间距怎么写,html段落内文字设置字间距间隔
  9. 美狐美颜SDK滤镜、哈哈镜功能算法分析
  10. OpenLayers风场图