当前位置: 首页 > wzjs >正文

北京公司网站建设定沧州百胜信息技术有限公司

北京公司网站建设定,沧州百胜信息技术有限公司,上海公司黄页,微盟开店怎么收费快速排序是Hoare于1962年提出的⼀种⼆叉树结构的交换排序⽅法,其基本思想为:任取待排序元素 序列中的某元素作为基准值,按照该排序码将待排序集合分割成两⼦序列,左⼦序列中所有元素均⼩ 于基准值,右⼦序列中所有元素均…

快速排序是Hoare于1962年提出的⼀种⼆叉树结构的交换排序⽅法,其基本思想为:任取待排序元素 序列中的某元素作为基准值,按照该排序码将待排序集合分割成两⼦序列,左⼦序列中所有元素均⼩ 于基准值,右⼦序列中所有元素均⼤于基准值,然后最左右⼦序列重复该过程,直到所有元素都排列 在相应位置上为⽌。

1、lomuto前后指针法

void Swap(int* x, int* y)
{int tmp = *x;*x = *y;*y = tmp;
}int _QuickSort(int* arr, int left, int right)
{int key = left, slow = left, fast = left + 1;while (fast <= right){if (arr[fast] < arr[key] && ++slow != fast){Swap(&arr[fast], &arr[slow]);}fast++;}Swap(&arr[key], &arr[slow]);return slow;
}void QuickSort(int* arr, int left, int right)
{if (left >= right){return;}int key = _QuickSort(arr, left, right );//左子序列QuickSort(arr,left,key-1);//右子序列QuickSort(arr,key+1,right);
}

2、hoare版本

1)创建左右指针,确定基准值

2)从右向左找出⽐基准值⼩的数据,从左向右找出⽐基准值⼤的数据,左右指针数据交换,进⼊下次 循环

int _QuickSort2(int* arr, int left, int right)
{int key = left;left++;while (left <= right){//left找比key大的值while (left <= right && arr[left] < arr[key]){++left;}//left指向比key大的值//right找比key小的值while (left <= right && arr[right] > arr[key]){--right;}if (left <= right){Swap(&arr[left++], &arr[right--]);}}Swap(&arr[key], &arr[right]);return right;
}

3、挖洞法

int _QuickSort3(int* arr, int left, int right)
{int key = arr[left];int hole = left;while (left < right){while (left < right && arr[right]>key){right--;}arr[hole] = arr[right];hole = right;while (left < right && arr[left] < key){left++;}arr[hole] = arr[left];hole = left;}arr[hole] = key;return hole;
}

4、非递归快排

void QuickSortNoR(int* arr, int left, int right)
{ST st;STInit(&st);//[left,right],进栈时要right先进left后进这样出栈的顺序才是对的STpush(&st, right);STpush(&st, left);while (!StackEmpty(&st)){//[begin,end]int begin = STtop(&st);STpop(&st);int end = STtop(&st);STpop(&st);int key = begin;int slow = begin;int fast = begin + 1;while (fast<=end){if (arr[fast] < arr[key] && ++slow != fast){Swap(&arr[fast], &arr[slow]);}fast++;}Swap(&arr[slow], &arr[key]);key = slow;//左 [begin,key-1]//右 [key+1,end]if (key + 1 < end){STpush(&st, end);STpush(&st, key + 1);}if (begin < key - 1){STpush(&st, key-1);STpush(&st, begin);}}}

http://www.dtcms.com/wzjs/553242.html

相关文章:

  • 手机网站免费空间西宁网站建设报价壹君博贴心
  • 网上询价九幺seo工具
  • 农资网站建设如何制作小程序商城
  • 苏州网站建设运营推广网站做好了怎么办
  • 做零食网站的选题理由哈尔滨专业建网站哪家好
  • 手机网站建设软件有哪些内容网站备案核实
  • 手机qq钓鱼网站怎么做常州网站搭建找哪家
  • 阿里云做网站用哪个镜像正定县住房和城乡建设局网站
  • 南山网站建设公司株洲网上购房节
  • 优秀网站设计模板增加网站广告位
  • 成都网站建设seo软文广告发稿
  • 好的手机网站推荐公司网站宣传
  • h5微网站开发建网站的域名是什么意思
  • 百度网站关键词优化在哪里做唐山住房城乡建设局门户网站
  • 做网站设计制作的公司贵州省铜仁市城乡建设局网站
  • 天河定制型网站建设网站建设 蜀美网络
  • 手机网站规划郑州专业网站优化
  • 备案信息如何上传的网站上山东省住房与城乡建设厅网站
  • 网站前端交互功能案例分析上海网站备案
  • 天津众业建设工程有限公司网站php手机网站模板
  • 高端响应式网站邯郸网络
  • 做内贸的什么网站效果好wordpress视频播放系统
  • 摄影作品共享网站开发背景抖音小店代运营
  • 网站建设的售后服务流程中国品牌设计
  • 做网站所需要的代码网页联系我们怎么做
  • 网站建设注意事项知乎做网站优化推广多少钱
  • 网站建设需要的手续织梦cms默认密码
  • wordpress被大量注册南通网站排名优化价格
  • 哪家企业的网站做的好淮南餐饮网站建设
  • 邯郸wap网站建设公司邢台专业网站建设价格